区别一:
①.eval():只能用于tf.Tensor类对象,也就是有输出的Operation。
②.run():只能用于没有输出的Operation。
③Session.run():既可以用于有输出的Operation,也可以用于没有输出的Operation。
所以我们训练的时候,对于优化器可以使用.run()和Session.run()。而对于predict可以使用.eval()和Session.run()。
通过代码说明:
import tensorflow as tf
a = tf.constant(2.0)
b = tf.constant(3.0)
c = tf.multiply(a, b) # 有输出Operation,结果属于tf.Tensor类
init = tf.global_variables_initializer() # 无输出Operation
sess = tf.Session()
with sess.as_default():
c.eval() # 正确
init.eval() # 错误
init.run() # 正确
sess.run(init) # 正确
c.run() # 错误
sess.run(c) # 正确
区别二:
使用Session.run()可以在同一步获取多个tensor中的值。
通过代码说明:
import tensorflow as tf
a = tf.constant(2.0)
b = tf.constant(3.0)
c = tf.multiply(a, b)
sess = tf.Session()
with sess.as_default():
a_ = a.eval() #得到一个tensor的值
b_ = b.eval() #得到一个tensor的值
a_, b_, c_ = sess.run([a,b,c]) #得到多个tensor的值