Sie können die Funktion RNN here
Eines der Argumente ist es nimmt sequence_length definiert verwenden
sequence_length: Spezifiziert die Länge jeder Sequenz in Eingänge. Eine Int32- oder Int64-Vektorgröße (Tensor) [Stapelgröße]. Werte in [0, T).
Hier ist, wie komplette Schleife implementieren
# x, state, sequence_length are placeholders
outputs, final_state = tf.nn.rnn(lstm_cell, x, state, sequence_length = sequence_lengths)
# add softmax layer, define loss, training method, etc
...
# code for one epoch
iterations = total_data_length/batch_size
max_sequence_length = max(all_possible_sequence_lengths)
cur_state = initial_state
for i in range(iterations):
# x is of dimension [max_sequence_length, batch_size, input_size]
# sequence_lengths is of dimension [batch_size]
x_data, sequence_data, y_data = mini_batch(batch_size)
feed_dict = {k: v for k, v in zip(x, x_data)}
feed_dict.append(sequence_lengths: sequence_data, ...)
outs, cur_state, _ = session.run([outputs, final_state, train], feed_dict)
Diese Methode mir etwas verwirrend für ein paar Gründe war:
[sequence_length, batch_size, input_size] und nicht
- Eingabeform ist [Stapelgröße, Sequenzlänge, Eingabegröße] Dies ist jedoch völlig sinnvoll, wenn Sie den Code durchlaufen und sehen, wie rnn() implementiert wird. Dies bedeutet auch, dass Sie Ihre Ausgänge (mit den gleichen Abmessungen wie die Eingänge) umformen müssen, um sie zum Beispiel an Matmul und dann an Softmax zu übergeben.
- Parametereingaben in der Funktion rnn() ist eine Python-Liste. Und Sie können dies nicht in feed_dict als {x: x_data} übergeben, Sie erhalten einen Fehler mit der Meldung "Hash-Typ nicht möglich: 'list'". Sehen Sie stattdessen, wie ich oben im Code das Verständnis verwendet habe.
Dieses https://github.com/tensorflow/tensorflow/tree/master/tensorflow/models/rnn Modell tut, was Sie (für BERSETZUNG in diesem Fall) – Ashish
Hallo Ashish wollen, habe ich versucht, durch diesen Code zu gehen bevor Sie diese Frage stellen. Aber ich konnte nicht genau herausfinden, wie es geht. Würde es Ihnen etwas ausmachen, auf den richtigen Platz im Code zu zeigen? Vielen Dank – akshaybetala