使用while_loop时,TensorFlow渐变不响应

时间:2016-05-29 22:18:44

标签: python tensorflow

我使用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])

1 个答案:

答案 0 :(得分:0)

参考TensorFlow stuck into endless loop using tf.while_loop()。请注意,如果正文包含可训练变量,则需要使用变量范围