2016-08-11 2 views
2

Der Batche-Ansatz für RNN im Tensorflow ist mir nicht klar. Zum Beispiel tf.nn.rnn Nehmen Sie als Eingabe Liste von Tensors [BATCH_SIZE x INPUT_SIZE]. Normalerweise füttern wir Session-Chargen von Daten, warum also eine Chargenliste, nicht eine Charge?RNN & Batches in Tensorflow

Das ist für mich zur nächsten Verwirrung führt:

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) 

I Liste der Tensoren pass [CONST_BATCH_SIZE x CONST_INPUT_OTPUT_SIZE] zu tf.nn.rnn und Ausgabewert bekam die Liste der Tensoren ist [CONST_BATCH_SIZE x CONST_NUM_OF_HIDDEN_STATES]. Jetzt möchte ich softmax für alle HIDDEN_STATES Ausgänge verwenden und Gewichte mit matmaul berechnen müssen + Bias

Sollte ich für 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) 

Oder sollte ich 2D-Array zu erstellen aus val und dann tf.matmul verwenden, ohne for ?

Antwort

0

Dies sollte funktionieren. Ausgabe ist Batch-Daten von RNN. Für alle Batch-Input-Probs wird die Wahrscheinlichkeit haben.

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

Ausgabe von RNN ist 3D (Liste der 2d) und softmax_w ist 2D, das ist die Frage: sollte ich in Chargen durchlaufen oder erstellen 2D-Array von 3D für Ausgänge – Brans

+0

können Sie diese Dimension mit Beispiel aufschreiben, wäre es einfach zu verstehen sein – rrb

Verwandte Themen