Tensorflow tf.scatter\u和\u更新变量需求与RNN.\u调用\u方法

Tensorflow tf.scatter\u和\u更新变量需求与RNN.\u调用\u方法,tensorflow,recurrent-neural-network,sequence-to-sequence,Tensorflow,Recurrent Neural Network,Sequence To Sequence,我正在开发RNN并使用Tensorflow 1.1。我得到了以下错误: tensorflow.python.framework.errors\u impl.InvalidArgumentError:节点“model/att\u seq2seq/encode/pocmru\u rnn\u encoder/rnn/while/Variable/Assign”具有来自不同帧的输入。输入“model/att_seq2seq/encode/pocmru rnn_encoder/rnn/while/Iden

我正在开发RNN并使用Tensorflow 1.1。我得到了以下错误:

tensorflow.python.framework.errors\u impl.InvalidArgumentError:节点“model/att\u seq2seq/encode/pocmru\u rnn\u encoder/rnn/while/Variable/Assign”具有来自不同帧的输入。输入“model/att_seq2seq/encode/pocmru rnn_encoder/rnn/while/Identity_3”位于“model/att_seq2seq/encode/pocmru rnn_encoder/rnn/while/model/att_seq2seq/encode/pocmru rnn_encoder/rnn/while/”帧中。输入“model/att_seq2seq/encode/pocmru_rnn_encoder/rnn/while/Variable”位于帧“”中。

错误是由动态rnn方法中的lambda函数和我的rnn中的一段代码引起的

  • tensorflow rnn.py“dynamic\u rnn/\u dynamic\u rnn\u loop/\u time\u step”,使用lambda函数调用rnn。调用方法来循环所有输入
  • 我的代码:
    
    如果类型(myObject)!=tf.变量:
    tp=tf.变量(myObject,validate_shape=False)
    其他:
    tp=myObject
    

从逻辑上讲,我反复使用tf.scatter\u和\u update来更新myObject。伪代码类似于
myObject=scatter\u ndu update(myObject,index,updates)
。因为tf.scatter\u和\u update需要变量作为参数并返回张量,所以我需要将张量包装到变量中。因此上面的代码(测试变量,然后换行)。我应该如何修改代码使其工作?谢谢

我目前通过创建一个类变量Cell.\u myobject\u tmp解决了这个问题,然后在调用scatter\u nd\u update方法之前,使用tf.assign为这个变量分配张量。我想,有更好的办法。请让我知道。感谢创建细胞。我的目标是非常糟糕的想法:)。。我花了两天时间调试这个创建的Tensorflow问题:10855-微分变量(模型参数)和可变张量