0

Ich bin neu in Tensorflow (1 Tag Erfahrung).Was sollte die Größe von Eingabe und versteckten Zustand in GRUCell von Tensorflow (Python) sein?

ich folgenden kleinen Code versuchen ein einfaches GRU basierend RNN mit einzelner Schicht und versteckter Größe von 100 wie folgt zu erstellen:

import pickle 
import numpy as np 
import pandas as pd 
import tensorflow as tf 

# parameters 
batch_size = 50 
hidden_size = 100 

# create network graph 
input_data = tf.placeholder(tf.int32, [batch_size]) 
output_data = tf.placeholder(tf.int32, [batch_size]) 

cell = tf.nn.rnn_cell.GRUCell(hidden_size) 

initial_state = cell.zero_state(batch_size, tf.float32) 

hidden_state = initial_state 

output_of_cell, hidden_state = cell(input_data, hidden_state) 

Aber ich bin immer für letzte Zeile folgende Fehler (dh cell() nennen)

Linear is expecting 2D arguments: [[50], [50, 100]] 

Was mache ich falsch?

Antwort

0

Eingaben an den Anrufoperator GRUCell werden voraussichtlich 2-D-Tensoren mit dem Typ tf.float32 sein. Folgendes sollte funktionieren:

input_data = tf.placeholder(tf.float32, [batch_size, input_size]) 

cell = tf.nn.rnn_cell.GRUCell(hidden_size) 

initial_state = cell.zero_state(batch_size, tf.float32) 

hidden_state = initial_state 

output_of_cell, hidden_state = cell(input_data, hidden_state) 
+0

Tatsächlich mit 'input_data = tf.placeholder (tf.float32, [batch_size, 1])' gearbeitet. Ich musste dann meine Eingabedaten von einem Array der Länge 50 zu einer 50X1-Matrix umformen. – Sangram

+0

Bearbeitet, um 'input_size' zu ​​berücksichtigen. Ja, im Allgemeinen kann Ihr Eingabevektor eine beliebige Größe haben. – keveman

+0

Danke! Ich denke, du wirst mir weiterhelfen können. Könnten Sie bitte einen Blick auf: http://stackoverflow.com/questions/38233056/how-can-i-complete-following-gru-based-rnn-written-in-tensorflow – Sangram