Требование переменной tf.scatter_nd_update против метода RNN.__call__
Я разрабатываю RNN и использую Tensorflow 1.1. Я получил следующую ошибку:
tensorflow.python.framework.errors_impl.InvalidArgumentError: The node 'model/att_seq2seq/encode/pocmru_rnn_encoder/rnn/while/Variable/Assign' has inputs from different frames. The input 'model/att_seq2seq/encode/pocmru_rnn_encoder/rnn/while/Identity_3' is in frame 'model/att_seq2seq/encode/pocmru_rnn_encoder/rnn/while/model/att_seq2seq/encode/pocmru_rnn_encoder/rnn/while/'. The input 'model/att_seq2seq/encode/pocmru_rnn_encoder/rnn/while/Variable' is in frame ''.
Ошибка вызвана лямбда-функцией в динамическом методе rnn и фрагментом кода в моем RNN.
- tenorflow rnn.py "dynamic_rnn / _dynamic_rnn_loop / _time_step", использующий лямбда-функцию для вызова RNN.вызовите метод, чтобы пройти через все входы.
- мой код:
if type(myObject) != tf.Variable: tp = tf.Variable(myObject, validate_shape=False) else: tp = myObject
По логике вещей, я неоднократно использую tf.scatter_nd_update для обновления myObject. Псевдокод будет выглядеть как myObject = scatter_nd_update(myObject, indices, updates)
, Поскольку tf.scatter_nd_update требует в качестве аргумента переменную и возвращает тензор, мне нужно поместить тензор в переменную. Отсюда и код выше (тестовая переменная, а затем перенос). Как мне изменить мой код, чтобы он работал? Спасибо!