TensorFlow如何执行符号循环(例如tf.while_loop,tf.scan等)?

时间:2017-06-26 17:31:08

标签: tensorflow conceptual

它是否在内部展开图形,即它是否使用循环体子图的副本动态创建静态图形,或者它是否仅管理每个循环迭代在不同内存位置的backprop的正向激活,明确地扩展图表。

1 个答案:

答案 0 :(得分:0)

此类循环未明确展开。我的意思是,如果tf.while_loop需要运行100次,那么你的图表将不会有100次调用body函数。例如,假设我们想要使用tensorflow来计算x^N(或python用语中的x**N)。这样做的一种方法是:

import tensorflow as tf

N = tf.constant(100)
i = tf.constant(0)
x = tf.constant(1.5)

def body(i, x, x0):
    return i + 1, x * x0, x0

output = tf.while_loop( lambda i,x,x0: i < N-1, body, [i, x, x] );

with tf.Session() as sess:
    writer = tf.summary.FileWriter("while_loop_example")
    writer.add_graph(sess.graph)
    print(sess.run(output))

此循环的主体需要运行99次。但是,如果我们查看图表(通过使用命令&#34; tensorboard --logdir while_loop_example&#34;),我们会得到:

enter image description here

如果我改变循环迭代次数,图形不会改变。