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
在 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