TensorFlow笔记:Session.run()与Tensor.eval()

在TensorFlow中Session.run()与Tensor.eval()都可以用来执行.

如果你有一个Tensor t,在使用t.eval()时,等价于:tf.get_default_session().run(t).
如下面两段代码是相同的:

# Using `Session.run()`.
sess = tf.Session()
c = tf.constant(5.0)
print(sess.run(c))

# Using `Tensor.eval()`.
c = tf.constant(5.0)
with tf.Session():
  print(c.eval())

而他们之间也存在这区别:

在第二个示例中,session充当上下文管理器,其作用是作为with块的生命周期的默认会话。 上下文管理器方法可以为简单用例(比如单元测试)提供更简洁的代码; 如果您的代码处理多个graphs和sessions,则可以更直接地对Session.run()进行显式调用。


简而言之:Session.run()常用于获取多个tensor中的值,而Tensor.eval()常用于单元测试、获取单个Tensor值

示例如下

t = tf.constant(42.0)
u = tf.constant(37.0)
tu = tf.mul(t, u)
ut = tf.mul(u, t)
with sess.as_default():
   tu.eval()  # runs one step
   ut.eval()  # runs one step
   sess.run([tu, ut])  # evaluates both tensors in a single step

References:
[1]:https://www.tensorflow.org/api_docs/python/tf/Tensor#eval
[2]:https://www.tensorflow.org/api_docs/python/tf/Session#run
[3]:https://stackoverflow.com/questions/33610685/in-tensorflow-what-is-the-difference-between-session-run-and-tensor-eval
[4]:https://www.tensorflow.org/programmers_guide/faq#running_a_tensorflow_computation

你可能感兴趣的:(TensorFlow)