Tensorflow 是否会为每个 eval() 调用重新运行?

Does Tensorflow rerun for each eval() call?

在 Tensorflow 和 Python 中,我正在做以下事情,通过在计算结束时观察多个变量来理解 Tensorflow 和调试代码。

with tf.Session():
    print "var1 ="
    print (var1.eval({x:myInputs, y:myOutputs}))
    print "var2 ="
    print (var2.eval({x:myInputs, y:myOutputs}))

Tensorflow 是否会为每个 eval() 调用重新运行 整个图形计算?重新 运行 整个图只是为了打印出一个变量(张量)似乎效率低下。如果这是正在发生的事情,有没有办法 运行 一次 graph/process/eval 然后打印出每个变量的值,而无需重新 运行 整个图表?

当您调用 Tensor.eval() 时,TensorFlow (i) 计算出整个图的哪个子图需要 运行 产生该张量的值,然后 (ii) 运行这就是整个图表。

使用Session.run()一次获取多个张量的值通常效率更高。例如,您可以将代码重写为 运行 图形一次:

with tf.Session() as sess:
    val1, val2 = sess.run([var1, var2], {x:myInputs, y:myOutputs})
    print "var1 =", val1
    print "var2 =", val2