Ich lerne LSTM-basierte Seq2seq-Modell in Tensorflow-Plattform. Ich kann sehr gut ein Modell auf einem gegebenen einfachen seq2seq Beispielen trainieren.Wie kann man zwei Sequenzen simultan durch LSTM in Tensorflow/TFLearn lernen?
Wenn ich jedoch zwei Sequenzen gleichzeitig aus einer gegebenen Sequenz lernen muss (zB: vorherige Sequenz und nächste Sequenz gleichzeitig aus der aktuellen Sequenz lernen), wie können wir das machen, dh den kombinierten Fehler berechnen aus beide Sequenz und Backpropagate den gleichen Fehler für beide Sequenzen?
Hier ist das Snippet zum LSTM Code, den ich verwende (meist aus ptb Beispiel genommen: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/models/rnn/ptb/ptb_word_lm.py#L132):
output = tf.reshape(tf.concat(1, outputs), [-1, size])
softmax_w = tf.get_variable("softmax_w", [size, word_vocab_size])
softmax_b = tf.get_variable("softmax_b", [word_vocab_size])
logits = tf.matmul(output, softmax_w) + softmax_b
loss = tf.nn.seq2seq.sequence_loss_by_example(
[logits],
[tf.reshape(self._targets, [-1])],
[weights])
self._cost = cost = tf.reduce_sum(loss)/batch_size
self._final_state = state
self._lr = tf.Variable(0.0, trainable=False)
tvars = tf.trainable_variables()
grads, _ = tf.clip_by_global_norm(tf.gradients(cost, tvars),config.max_grad_norm)
optimizer = tf.train.GradientDescentOptimizer(self.lr)
self._train_op = optimizer.apply_gradients(zip(grads, tvars))
Ja, ich brauche einen Encoder und mehrere Decoder. Ich vermute, warum diese Funktionalität im "Test" -Ordner beibehalten wird. Für die Kosten, ab sofort habe ich einfach die Kosten aller Sequenzen addiert, wie Sie vorgeschlagen haben. – user3480922