没有为操作tf.scatter_update定义渐变

时间:2018-01-16 22:37:07

标签: tensorflow gradient

我使用tf.scatter_update更新代码中的不可训练变量ALAO。但是,当我运行优化程序tf.train.AdamOptimizer(config.actor_lr0,0.9,0.999,1e-8).minimize(actor_loss)时,我收到错误LookupError: No gradient defined for operation 'actor/encoder/beer_game_flow_8/next_scat_j_2' (op type: ScatterUpdate)。 我发现tf.scatter_update没有渐变,这就是我收到错误的原因。 代码中的更新是:

self.players[k-1].AS = tf.scatter_update(self.players[k-1].AS, self.curTime + leadTimeIn, tf.add(self.players[k-1].AS[self.curTime + leadTimeIn], possible_shipment), name='next_scat_j' )

self.players[k+1].AO = tf.scatter_update(self.players[k+1].AO, self.curTime + leadTime, tf.add(self.players[k+1].AO[self.curTime + leadTime], self.players[k].actionValue(self.curTime, self.playType)) , name='handle_scat_j')

由于ASAO都不可训练,我不需要它们的渐变,在op中,只存在这两个变量。所以,我想知道为什么TensorFlow想要获得渐变,是否有任何方法可以阻止AdamOptimizer考虑scatter_update? 我的意思是,我可以在compute_gradient中排除给定的op吗? 我感谢任何评论。

谢谢, 阿夫欣

0 个答案:

没有答案