我在this link中阅读了input_
的参数tf.Print
的说明。我尝试了几个实验,结果让我很困惑。
我使用以下代码进行实验
A = tf.constant([[1, 2, 3], [4, 5, 6]])
a1, a2 = tf.split(A, 2, axis=0)
p = tf.Print(A, [a1, a2])
with tf.Session() as sess:
sess.run([p])
输出
[[1 2 3]][[4 5 6]]
我已将代码行p = tf.Print(A, [a1, a2])
替换为p = tf.Print(a1, [a1, a2])
或p = tf.Print(a2, [a1, a2])
,并获得完全相同的输出:[[1 2 3]][[4 5 6]]
。这让我觉得“无关紧要input_
是什么,你可以传递任何你想要的东西”
我的问题是
input_
参数对tf.Print
有影响吗?我发现了一个类似的问题here,但IMO没有涵盖我在这个问题中所想的方面。
答案 0 :(得分:2)
是的,这很重要。在您的示例中,在运行print op之后,p的值将为input_。
A = tf.constant([[1, 2, 3], [4, 5, 6]])
a1, a2 = tf.split(A, 2, axis=0)
p = tf.Print(A, [a1, a2])
with tf.Session() as sess:
p_val = sess.run([p])
print(p_val)
这将说明不同之处。
同样重要的是,如果p不是实际图形计算的一部分,它将不会打印该值。因此,_input应该是您实际需要计算的内容的一部分。
实际上只需致电
_input = tf.Print(_input,[...])
所以这是一个直通。