【发布时间】:2017-12-12 17:58:57
【问题描述】:
看代码:
import tensorflow as tf
x = tf.constant(1.0)
y = tf.constant(2.0)
z = tf.constant(3.0)
def f1():
return tf.Print(x, [x])
def f2():
return tf.Print(z, [z])
op = tf.cond(x>y, f1, f2)
with tf.Session() as sess:
sess.run(op)
我很疑惑,tf.Print的输出是3.0
我们知道,tf.Print(z, [z]) 只有在评估z 时才会输出z 的值,但我认为我没有评估z。
另一个问题是关于tf.cond,它是如何将节点添加到图形中的,例如如何将tf.Print添加到图形中,我认为它应该将一些张量与tf.Print的返回相关联,否则tf.Print赢了'不会被执行。
我很困惑。
【问题讨论】:
-
tf.Print操作的张量输出等于它的输入。所以tf.Print(x, [y1, y2, ...])将评估为x,但有打印[y1, y2, ...]值的副作用。这是否开始回答您的问题?
标签: tensorflow