Tensorflow里的eval()函数

今天读代码的时候,看到有个eval函数,仔细琢磨了一下,还挺有意思的,其实它就是启动计算图的一种方式,上例程:

#2021.10.14 HIT ATCI LZH
#TensorFlow中的eval函数
import tensorflow as tf
#为训练数据申明Tensorflow占位符
X = tf.placeholder(tf.float32, name='X')
Y = tf.placeholder(tf.float32, name='Y')
#创建Tensorflow的权重和偏置且初始值设为0
w = tf.Variable(1.5)
b = tf.Variable(3.0)
#定义用于预测的线性回归模型
Y_hat = X*w + b
#定义损失函数
loss = tf.square(Y - Y_hat, name='loss')
#申明初始化操作符
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init_op)
    print('sess.run(loss, feed_dict = {X: 4., Y: 6.}) = ',sess.run(loss, feed_dict = {X: 4., Y: 6.}))#loss = (4*1.5+3-6)^2 = 9
    print('loss.eval({X: 4., Y: 6.} = ',loss.eval({X: 4., Y: 6.}))
    print('大家都一样')

打印输出:

sess.run(loss, feed_dict = {X: 4., Y: 6.}) =  9.0
loss.eval({X: 4., Y: 6.} =  9.0
大家都一样

因此可以看到,eval() 其实就是tf.Tensor的Session.run() 的另外一种写法。

下面两种写法是等效的:

with tf.Session() as sess:
  print(accuracy.eval({x:mnist.test.images,y_: mnist.test.labels}))
with tf.Session() as sess:
  print(sess.run(accuracy, {x:mnist.test.images,y_: mnist.test.labels}))

但是要注意的是,eval()只能用于tf.Tensor类对象,也就是有输出的Operation。对于没有输出的Operation, 可以用.run()或者Session.run()。Session.run()没有这个限制。

 桥本环奈真好看!!!!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nwsuaf_huasir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值