资讯专栏INFORMATION COLUMN

Tensorflow:.run()和.eval()区别

xiaoqibTn / 1370人阅读

摘要:下面的两个代码片段是等价的在第二个示例中,会话充当上下文管理器,其作用是将其安装为块的生命周期的默认会话。上下文管理器方法可以为简单用例比如单元测试提供更简洁的代码如果您的代码处理多个图形和会话,则可以更直接地对进行显式调用。

Tensorflow:.run()和.eval()区别 eval() 其实就是tf.Tensor的Session.run() 的另外一种写法,但两者有差别

1.eval(): 将字符串string对象转化为有效的表达式参与求值运算返回计算结果
2.eval()也是启动计算的一种方式。基于Tensorflow的基本原理,首先需要定义图,然后计算图,其中计算图的函数常见的有run()函数,如sess.run()。同样eval()也是此类函数,
3.要注意的是,eval()只能用于tf.Tensor类对象,也就是有输出的Operation。对于没有输出的Operation, 可以用.run()或者Session.run();Session.run()没有这个限制。

Tensor.run和Tensor.eval的区别

在会话中需要运行节点,会碰到两种方式:Session.run()和Tensor.eval()

解释一

1.如果t是一个tf.Tensor对象,则tf.Tensor.eval是tf.Session.run的缩写(其中sess是当前的tf.get_default_session。下面的两个代码片段是等价的:
2.在第二个示例中,会话充当上下文管理器,其作用是将其安装为with块的生命周期的默认会话。 上下文管理器方法可以为简单用例(比如单元测试)提供更简洁的代码; 如果您的代码处理多个图形和会话,则可以更直接地对Session.run()进行显式调用。

解释二

如果你有一个Tensor t,在使用t.eval()时,等价于:tf.get_default_session().run(t).
举例:

t = tf.constant(42.0)
sess = tf.Session()
with sess.as_default():   # or `with sess:` to close on exit
    assert sess is tf.get_default_session()
    assert t.eval() == sess.run(t)

这其中最主要的区别就在于你可以使用sess.run()在同一步获取多个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

注意到:每次使用 eval 和 run时,都会执行整个计算图,为了获取计算的结果,将它分配给tf.Variable,然后获取。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41846.html

相关文章

  • tensorflow上进行机器学习的“Hello World”:MNIST 手写识别

    摘要:安装好了安装笔记,接下来就在他的官网指导下进行手写数字识别实验。实验过程进入虚拟环境后,首先进入目录然后进入交互终端。 安装好了tensorflow(TensorFlow 安装笔记),接下来就在他的官网指导下进行Mnist手写数字识别实验。 softmax 实验过程 进入tfgpu虚拟环境后,首先进入目录:/anaconda2/envs/tfgpu/lib/python2.7/site...

    garfileo 评论0 收藏0

发表评论

0条评论

xiaoqibTn

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<