2016-08-11 12 views
2

TensorflowのRNNのバッチアプローチは私には分かりません。例えばtf.nn.rnn Tensors [BATCH_SIZE x INPUT_SIZE]の入力リストを取る。私たちは通常、データのセッションバッチに給餌しています。なぜ、バッチのリストは一括バッチではないのですか?TensorflowのRNNとバッチ

これは私のために次の混乱につながる:

data = [] 
for _ in range(0, len(train_input)): 
    data.append(tf.placeholder(tf.float32, [CONST_BATCH_SIZE, CONST_INPUT_SIZE])) 

lstm = tf.nn.rnn_cell.BasicLSTMCell(CONST_NUM_OF_HIDDEN_STATES) 

val, state = tf.nn.rnn(lstm, data, dtype=tf.float32) 

私はtf.nn.rnnに[CONST_BATCH_SIZE X CONST_INPUT_OTPUT_SIZE]テンソルのリストを渡し、テンソル[CONST_BATCH_SIZE X CONST_NUM_OF_HIDDEN_STATES]のリストである出力値を得ました。今、私はすべてのHIDDEN_STATES出力用のソフトマックスを使用してmatmaul +バイアス

と重みを計算する必要がしたい私はMATMULのために使用する必要があります。

weight = tf.Variable(tf.zeros([CONST_NUM_OF_HIDDEN_STATES, CONST_OTPUT_SIZE])) 

for i in val: 
    mult = tf.matmul(i, weight) 

bias = tf.Variable(tf.zeros([CONST_OTPUT_SIZE])) 
prediction = tf.nn.softmax(mult + bias) 

または私はvalから2次元配列を作成し、forなしtf.matmulを使用する必要があります?

答えて

0

これは動作するはずです。出力はRNNからのバッチデータです。すべてのバッチインプットprobsには確率があります。 RNNの

logits = tf.matmul(output, softmax_w) + softmax_b 
probs = tf.nn.softmax(logits) 
+0

出力は3D(2Dのリスト)であるとsoftmax_wが問題である2Dである:私はバッチで反復または出力 – Brans

+0

のために、3Dから2D配列を作成する必要がありますが、一例で、これらの寸法を記入することができ、それが希望理解しやすい – rrb

関連する問題