【发布时间】:2018-01-23 07:48:05
【问题描述】:
运行 Tensorflow“for 循环”的规范方式是什么?
具体来说,假设我们有一些不依赖循环迭代的body 函数,但必须运行n 次。
有人可能认为一个好的方法可能是在 tf.while_loop 中运行它,如下所示:
def body(x):
return ...
def while_body(i,x):
return i+1, body(x)
i, x = tf.while_loop(lambda i: tf.less(i, n), while_body, [tf.constant(0),x])
事实上,这正是这个问题中评分最高的答案所暗示的:
How can I run a loop with a tensor as its range? (in tensorflow)
不过tf.while_loop docs特意说
对于正确的程序,对于任何大于 0 的并行迭代,while_loop 应该返回相同的结果。
如果你在正文中放置一个计数器,那么似乎违反了该条件。因此,似乎必须有一种不同的方式来设置“for循环”。
此外,即使没有明确的错误,这样做似乎也会在迭代之间产生依赖关系,这意味着我认为它们不会并行运行。
【问题讨论】:
标签: tensorflow