Tensorflow教程系列(3): 会话session

前言

tf.Session 允许执行所有图或者图的一部分,它在一个或者多个机器分配资源,并且保留中间结果和变量的实际值。

注意:

在tensorflow 2.0 版本Session已经去掉了!

session是对图定义的操作进行运行,图定义的变量如果使用session运行过一遍之后,再用session返回这个变量会报错。解决方法是,每次运行session,先对图进行初始化,再访问相应的变量。

1. 会话session

1.1常规操作:定义会话

#创建会话
session=tf.Session()
#运行定义好的运算
session.run()
#关闭会话
session.close()
>>> import tensorflow as tf
>
>>> a=tf.constant([1.0,2.0],name="a")

>>> sess=tf.Session()
>>> sess.run(a+b)
array([ 6.,  8.], dtype=float32)
>>> sess.close()

>>> a+b
<tf.Tensor 'add_1:0' shape=(2,) dtype=float32>

1.2 with操作

使用python的上下文管理器,可以防止忘记关session造成的资源泄漏问题。

用法为,把运算放在with下:

>>> with tf.Session() as sess:
...     sess.run(a+b)
...
array([ 6.,  8.], dtype=float32)

或者如下,

>>> result = a+b
>>> sess = tf.Session()
>>> with sess.as_default():
...     print(result.eval())
...
[ 6.  8.]

2. 配置生成的会话ConfigProto()

2.1 tf.InteractiveSession()

交互环境直接构建默认会话函数tf.InteractiveSession()
使用它可以自动将生成的会话注册为默认会话。

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

a=tf.constant([1,2],name='a')
b=tf.constant([3,4],name='b')

result=a+b

sess=tf.InteractiveSession()
print(result.eval())
sess.close()
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
#用于过滤一些warning

2.2 ConfigProto

下面配置GPU运算到CPU,代码需要使用TensorFlow-GPU版才能运行。

config = tf.ConfigProto(allow_soft_placement=True,log_device_placement=True)
sess1 = tf.InteractiveSession(config=config)
sess2 = tf.Session(config=config)

运行结果

Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GT 720M, pci b
us id: 0000:01:00.0
Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GT 720M, pci b
us id: 0000:01:00.0

参考:

  1. What is a TensorFlow Session?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rosefunR

你的赞赏是我创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值