TensorFlow运行模型-会话

TensorFlow中使用会话(session)来执行定义好的运算,会话拥有并管理TensorFlow程序运行时的所有资源,当计算完成之后需要关闭回来帮助系统回收资源。
可以明确调用会话生成函数和关闭函数:

import tensorflow as tf

#定义两个向量a,b
a = tf.constant([1.0, 2.0], name='a')
b = tf.constant([2.0, 3.0], name='b')
result = a+b
sess = tf.Session() #生成一个会话,通过一个会话session来计算结果
print(sess.run(result))
sess.close() #关闭会话

若程序在执行中异常退出,可能会话不能关闭,所以可以使用Python上下文管理器的机制,将所有的计算放在“with”的内部,在代码块中执行时就可以保持在某种运行状态,而当离开该代码块时就结束当前状态,省去会话关闭代码:

with tf.Session() as sess:
    print(sess.run(result))
#    print(result.eval())  #这行代码也可以直接计算

TensorFlow不会自动生成默认的会话,需要程序员指定。将会话指定为默认会话则TensorFlow执行时自动启用此会话:

sess = tf.Session()
with sess.as_default():
    print(result.eval()) #tf.Tensor.eval在默认会话中可直接计算张量的值

在使用python编写时,可以使用函数直接构建默认会话:

sess = tf.InteractiveSession()
print(result.eval())
sess.close()

会话可以通过ConfigProto Protocol Buffer来进行功能配置,类似于并行的线程数、GPU分配策略、运算超过时间等参数设置。比较常用的是以下两个:

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

第一个allow_soft_placement参数,当其为True时,在以下任意一个条件成立时,GPU上的运算可以放到CPU上计算:

  1. 运算不能在GPU上运行
  2. 没有空闲GPU可使用
  3. 运算输入包含对CPU计算结果的引用

设置为True,可以使代码的可移植性更强。
第二个log_device_placement参数,当其为True时,日志中将会记录每个节点被安排在了哪个设备上,但其会增加日志量。
若上述代码在没有GPU的机器上运行,会获得以下输出

Device mapping: no known devices.

注:GPU计算和CPU计算的区别:
CPU 由专为顺序串行处理而优化的几个核心组成,而 GPU 则拥有一个由数以千计的更小、更高效的核心(专为同时处理多重任务而设计)组成的大规模并行计算架构。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值