我使用TensorFlow构建深度学习模型。 (整个模型非常复杂。)在模型中,我需要使用while_loop
根据输入的句子数动态控制计算流程。以前,我使用for
循环代替while_loop
。切换到while_loop
后,渐变不再起作用。
渐变不工作我的意思是如果我执行前进,它工作正常(产生一些输出)。但是,如果我为训练启用渐变计算,那么当我运行我的代码时它不会产生任何响应,只是挂在那里。在top
中,它显示为S
(暂停)。
任何人都知道发生了什么事?
以下是我以非常标准的方式使用while_loop
的方式:
def body(argmax_ep_gate, h, mem_state_previous, dummy):
'''doing some computation'''
return tf.to_int32(argmax_ep_gate), h, mem_state_current, mem_state_previous
def condition(argmax_ep_gate, h, mem_state_previous, dummy):
'''return some condition in bool'''
argmax_g, h, _, state = tf.while_loop(
condition, body, [initial_argmax_g, initial_h, self.state, self.state])
答案 0 :(得分:0)
参考TensorFlow stuck into endless loop using tf.while_loop()。请注意,如果正文包含可训练变量,则需要使用变量范围