我是靠谱客的博主 专注大树,最近开发中收集的这篇文章主要介绍tensorflow python 区别_Tensorflow:.run()和.eval()区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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,然后获取。

最后

以上就是专注大树为你收集整理的tensorflow python 区别_Tensorflow:.run()和.eval()区别的全部内容,希望文章能够帮你解决tensorflow python 区别_Tensorflow:.run()和.eval()区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部