首页 > 人工智能(Artificial Intelligence) > TensorFlow框架 > TensorFlow框架安装与入门

TensorFlow 运行模型 -- 会话

本文将介绍如何使用TensorFlow 中的会话( session )来执行定义好的运算。会话拥有并管理 TensorFlow 程序运行时的所有资源。

所有计算完成之后需要关闭会话来帮助系统回收资源,否则就可能出现资源泄漏的问题。

TensorFlow 中使用会话的模式一般有两种,第一种模式需要明确调用会话生成函数和关闭会话函数,这种模式的代码流程如下。

# 启动默认图.
sess = tf.Session()

# 调用 sess 'run()' 方法来执行矩阵乘法 op, 传入 'product' 作为该方法的参数.
# 上面提到, 'product' 代表了矩阵乘法 op 的输出, 传入它是向方法表明, 我们希望取回
# 矩阵乘法 op 的输出.
#
# 整个执行过程是自动化的, 会话负责传递 op 所需的全部输入. op 通常是并发执行的.
#
# 函数调用 'run(product)' 触发了图中三个 op (两个常量 op 和一个矩阵乘法 op) 的执行.
#
# 返回值 'result' 是一个 numpy `ndarray` 对象.
result = sess.run(product)
print(result) # [[ 12.]]

# 任务完成, 关闭会话.
sess.close()

使用这种模式时,在所有计算完成之后,需要明确调用 Session.close 函数来关闭会话并释放资源。

然而,当程序因为异常而退出时,关闭会话的函数可能就不会被执行从而导致资源泄漏 。

为了解决异常退出时资源释放的问题, TensorFlow 可以通过 Python 的上下文管理器来使用会话。以下代码展示了如何使用这种模式。

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

通过 Python 上下文管理器的机制,只要将所有的计算放在 “ with”的内部就可以 。 当上下文管理器退出时候会自动释放所有资源。

这样既解决了因为异常退出时资源释放的问题,同时也解决了忘记调用 Session.close 函数而产生的资源泄漏。

交互式使用

文档中使用一个会话 Session 来启动图,并调用 Session.run() 方法执行操作。

为了便于使用诸如 IPython 之类的 Python 交互环境,使用 InteractiveSession 代替 Session 类,使用 Tensor.eval() 和 Operation.run() 方法代替 Session.run()。

# 进入一个交互式 TensorFlow 会话.
import tensorflow as tf
sess = tf.InteractiveSession()

x = tf.Variable([1.0, 2.0])
a = tf.constant([3.0, 3.0])

# 使用初始化器 initializer op run() 方法初始化 'x'
x.initializer.run()

# 增加一个减法 sub op, 'x' 减去 'a'. 运行减法 op, 输出结果
sub = tf.subtract(x, a)
print(sub.eval()) # [-2. -1.]
关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。