Geo*_*ing 195 python tensorflow
TensorFlow有两种方法来评估图的一部分:Session.run
在变量列表和Tensor.eval
.这两者有区别吗?
mrr*_*rry 234
如果你有一个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)
Run Code Online (Sandbox Code Playgroud)
最重要的区别是您可以sess.run()
在同一步骤中使用获取许多张量的值:
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
Run Code Online (Sandbox Code Playgroud)
请注意,每次调用eval
并将run
从头开始执行整个图形.要缓存计算结果,请将其分配给a tf.Variable
.
Sal*_*ali 42
关于张量流的FAQ会话对完全相同的问题有一个答案.我会继续把它留在这里:
如果t
是Tensor
对象,t.eval()
则是sess.run(t)
((sess
当前默认会话的位置)的简写.以下两段代码是等效的:
sess = tf.Session()
c = tf.constant(5.0)
print sess.run(c)
c = tf.constant(5.0)
with tf.Session():
print c.eval()
Run Code Online (Sandbox Code Playgroud)
在第二个示例中,会话充当上下文管理器,其具有将其安装为with块的生存期的默认会话的效果.上下文管理器方法可以为简单的用例(如单元测试)提供更简洁的代码; 如果您的代码处理多个图形和会话,则显式调用可能更直接with
.
我建议你至少浏览整个FAQ,因为它可能会澄清很多东西.
归档时间: |
|
查看次数: |
103548 次 |
最近记录: |