它是否在内部展开图形,即它是否使用循环体子图的副本动态创建静态图形,或者它是否仅管理每个循环迭代在不同内存位置的backprop的正向激活,明确地扩展图表。
答案 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;),我们会得到:
如果我改变循环迭代次数,图形不会改变。