Я изучаю модель seq2seq на основе LSTM на платформе Tensorflow. Я могу очень хорошо обучить модель на данных простых примерах seq2seq.Как узнать две последовательности одновременно через LSTM в Tensorflow/TFLearn?
Однако, в тех случаях, когда мне приходится изучать сразу две последовательности из заданной последовательности (например, для изучения предыдущей последовательности и следующей последовательности из текущей последовательности одновременно), как мы можем это сделать, т.е. вычислить комбинированную ошибку из обе последовательности и backprogogate ту же ошибку для обеих последовательностей?
Вот фрагмент кода в код LSTM, который я использую (в основном взяты из примера РТВ: 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))
Да, мне нужен один кодировщик и мультиуровневые декодеры. Я предполагаю, почему эта функция хранится в папке «test». По стоимости, на данный момент, я просто добавил затраты из всех последовательностей, как вы предложили. – user3480922