tensorflow编程中的“ sess.run()和“ .eval()””

问题描述 投票:1回答:1

在Tensorflow编程中,有人可以告诉我“ .eval()”和“ sess.run()”之间的区别是什么。它们每个都做什么以及何时使用它们?

python tensorflow machine-learning deep-learning data-science
1个回答
0
投票

session对象封装了评估Tensor对象的环境。

如果xtf.Tensor对象,则tf.Tensor.evaltf.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()

© www.soinside.com 2019 - 2024. All rights reserved.