Tensorflow运行模型——会话

Tensorflow运行模型——会话


  这一部分介绍如何使用Tensorflow中的会话(session)来执行定义好的运算。会话拥有并管理Tensorflow程序运行时的所有资源。所有计算完成之后需要关闭会话来帮助系统回收资源,否则就可能出现资源泄露的问题。Tensorflow中使用会话的模式一般有两种,第一种模式需要明确调用会话生成函数和关闭会话函数,这种模式的代码如下:

import tensorflow as tf

# 创建一个会话。
sess = tf.Session()
# 使用这个创建好的会话来得到关心的运算结果。
sess.run(result)# 其中result是运算结果,是一个张量
#关闭会话使得本次运行中使用到的资源可以被释放。
sess.close()

  使用这种模式时,在所有计算完成之后,需要明确调用Session.close函数来关闭会话并释放资源。然而,当程序因为异常而退出时,关闭会话的函数可能就不会被执行从而导致资源泄露。为了解决异常退出时资源释放的问题,Tensorflow可以通过Python的上下文管理器来使用会话。代码如下:

import tensorflow as tf

# 创建一个会话,并通过Python中的上下文管理器来管理这个会话。
with tf.Session() as sess:
    # 使用创建好的会话来计算关心的结果。
    sess.run(result)
# 不需要再调用“Session.close()”函数来关闭会话,
# 当上下文退出时会话关闭和资源释放也自动完成了。

  通过Python上下文管理器的机制,只要将所有的计算放在"with"的内部就可以。当上下文管理器退出时候会自动释放所有资源。这样既解决了因为异常退出时资源释放的问题,同时也解决了忘记调用Session.close函数而产生的资源泄露。
  Tensorflow在计算时会自动生成一个默认的计算图,如果没有特殊指定,运算会自动加入这个计算图中。Tensorflow中的会话也有类似的机制,但Tensorflow不会自动生成默认的会话,而是需要手动指定。当默认的会话被指定之后可以通过tf.Tensor.eval函数来计算一个张量的取值。代码如下:

import tensorflow as tf

sess = tf.Session()
with sess.as_default():
    print(result.eval)

以下代码也可以完成相同的功能。

sess = tf.Session()
# 以下两个命令也可以完成相同的功能
print(sess.run(result))
print(result.eval(session=sess))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值