Tensorflow的tf.while_loop是否在并行执行时自动捕获依赖项?

时间:2017-06-19 21:36:50

标签: python-2.7 while-loop tensorflow parallel-processing

我对在Tensorflow中实现递归神经网络感兴趣,就像在How can I implement a recursive neural network in TensorFlow?中所做的那样。

然而,在他的实现中,parallel_iterations语句的tf.while_loop被固定为1.我担心这可能太慢了。由于我将要提供给tensorflow的树具有彼此不相关的部分,我希望我可以将parallel_iterations设置为更高的值。但是,作为输入到tensorflow的树中存在一些依赖性是不可避免的,我担心将其设置为更高的值可能会破坏依赖属性。

所以我的问题是,Tensorflow的tf.while_loop是否已经自动捕获了依赖关系,以便仅使用不相互依赖的palesism?

tensorflow文档说明如下:

  

对于正确的程序,while_loop应该返回相同的结果   parallel_iterations> 0

但我不确定他们的意思是什么"正确的节目"。

1 个答案:

答案 0 :(得分:2)

你可以。

根据这个issue,一旦计算出所有输入节点,ops将并行运行:

  

while_loop实现非严格语义。一旦该迭代的一个操作准备就绪(即,其所有输入都可用),迭代就可以开始执行。因此,while_loop可以轻松地并行运行多个迭代。例如,对于扫描,即使累积值在步骤中不可用,该步骤仍然可以启动并执行不依赖于累积值的任何操作。

所以你不应该遇到任何问题。