我正在开发 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 方法中的 lambda 函数和我的 RNN 中的一段代码引起的。
- tensorflow rnn.py "dynamic_rnn / _dynamic_rnn_loop / _time_step" 表示使用 lambda 函数调用 RNN。call方法循环遍历所有输入。
- 我的代码:
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 需要变量作为参数并返回张量,因此我需要将张量包装到变量中。因此上面的代码(测试变量然后换行)。我应该如何修改我的代码以使其工作?谢谢!