在Tensorflow编程中,有人可以告诉我“ .eval()”和“ sess.run()”之间的区别是什么。它们每个都做什么以及何时使用它们?
session
对象封装了评估Tensor对象的环境。
如果x
是tf.Tensor
对象,则tf.Tensor.eval
是tf.Session.run
的简写,其中sess
是当前的tf.get_default_session
。
您可以将会话设置为以下默认值
x = tf.constant(5.0)
y = tf.constant(6.0)
z = x * y
with tf.Session() as sess:
print(sess.run(z)) # 30.0
print(z.eval()) # 30.0
最重要的区别是您可以使用sess.run
在下面的同一步骤中获取许多张量的值
print(sess.run([x,y])) # [5.0, 6.0]
print(sess.run(z)) # 30.0
其中eval
一次获取单个张量值,如下所示
print(x.eval()) # 5.0
print(z.eval()) # 3.0
TensorFlow计算定义了在没有如下评估之前没有数值的计算图
print(x) # Tensor("Const_1:0", shape=(), dtype=float32)
在Tensorflow 2.x (>= 2.0)
中,可以使用tf.compat.v1.Session()
代替tf.session()