TensorFlow基础知识5-会话(session)
来源:互联网 发布:老外网络视频教英语 编辑:程序博客网 时间:2024/06/05 02:21
会话在之前的文章中也使用过,这里做一个详细介绍。
构造阶段完成后, 才能启动图。启动图的第一步是创建一个 Session 对象, 如果无任何创建参数, 会话构造器将启动默认图。会话会管理TensorFlow程序运行时的所有资源。当所有计算完成之后需要关闭会话来帮助系统回收资源,否则就可能出现资源泄露的问题。
TensorFlow中使用会话的模式一般有两种:
1、需要明确调用会话生成函数和关闭会话函数。
# 创建一个会话。sess = tf.Session()# 使用会话得到之前计算的结果。sess.run(...)# 关闭会话使得本次运行中使用到的资源可以被释放。sess.close()
例子:
import tensorflow as tf#使用张量记录中间结果a = tf.constant([1.0, 2.0], name="a")b = tf.constant([2.0, 3.0], name="b")result = a + b# 创建一个会话。sess = tf.Session()# 使用会话得到之前计算的结果。print(sess.run(result))# 关闭会话使得本次运行中使用到的资源可以被释放。sess.close()
输出:
[ 3. 5.]
使用这种模式时,在所有计算完成之后,需要明确调用Session.close函数来关闭会话释放资源。然而,当程序因为异常而退出时,关闭会话的函数可能就不会被执行从而导致资源泄露。
所以TensorFlow可以通过Python的上下文管理器来使用会话。
2、通过Python的上下文管理器来使用会话。
#创建一个会话,并通过Python中的上下文管理器来管理with tf.Session() as sess: #使用这个会话来计算关心的结果 sess.run(...)#不再需要调用“Session.close()”函数来关闭会话,当上下文退出时会话关闭和资源释放也会自动完成。
例子:
import tensorflow as tf#使用张量记录中间结果a = tf.constant([1.0, 2.0], name="a")b = tf.constant([2.0, 3.0], name="b")result = a + bwith tf.Session() as sess: print(sess.run(result))
通过Python上下文管理器的机制,只要将所有的计算放在with的内部就可以。当上下文管理器退出时就会自动释放所有资源。这样既解决了因为异常退出时资源释放的问题,同时也解决了忘记调用Session.close函数而产生的资源泄露。
3、在交互式环境下直接构建默认会话函数
TensorFlow在运算中会自动加入一个默认的计算图,而会话也有默认的会话,不过需要手动指定。
sess = tf.Session()with sess.as_default(): print(result.eval())
以下两种命令完成相同的功能:
sess = tf.Session()# 下面的两个命令有相同的功能。print(sess.run(result))print(result.eval(session=sess))
在交互式环境下(比如Python脚本 IPython 或者Jupyter的编辑器下),通过设置默认会话的方式来获取张量的取值更加方便。所以TensorFlow提供了tf.InteractiveSession函数,可以在交互式环境下直接构建默认会话。这个函数会自动将生成的会话注册为默认会话。使用 Tensor.eval() 和 Operation.run() 方法代替 Session.run(). 这样可以避免使用一个变量来持有会话。
sess = tf.InteractiveSession ()print(result.eval())sess.close()
再看一个例子
# 进入一个交互式 TensorFlow 会话.import tensorflow as tfsess = 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.sub(x, a)print(sub.eval())# ==> [-2. -1.]
完整的session的API:http://wiki.jikexueyuan.com/project/tensorflow-zh/api_docs/python/client.html
参考:http://wiki.jikexueyuan.com/project/tensorflow-zh/get_started/basic_usage.html
- TensorFlow基础知识5-会话(session)
- 【TensorFlow】会话session(三)
- TensorFlow基础:Session(会话)
- Tensorflow学习:Session会话控制
- TensorFlow运行模型--会话session
- tensorflow学习笔记(3):会话(session)
- Axis2(5):会话(Session)管理
- 会话 (session)
- 会话(Session)固定
- 图解Session(会话)
- 会话(cookie session)
- ---会话管理(session)
- 图解 Session(会话)
- 图解 Session(会话)
- (三十八)会话Session
- 会话(Session)机制
- Servlet Session(会话)
- Tensorflow中Session会话控制的两种打开模式
- 应该挖一口属于自己的井
- 数据结构——四
- mysql异常:You can't specify target table 'my' for update in FROM clause
- hexo的Next创建tags
- 2017百度之星资格赛 度度熊的午饭时光(dfs)
- TensorFlow基础知识5-会话(session)
- JS变量重复声明忽略的原理
- 模拟借书系统简易版(慕课网java入门第三季异常)
- Java中,要想跳出多重循环
- 手把手教你整懂http 协议
- CentOS7 .NetCore+Nginx 部署
- Android Camera fw学习(五)-takepicutre(STILL_TAKEPICTURE)流程分析
- Spring-boot Unable to start EmbeddedWebApplicationContext 分析与解决方法
- Hadoop-No.9之表和Region