TensorFlow中的小知识:tf.ConfigProto()与Session

tf.ConfigProto()

现在记录一下我们经常会用到的tf.ConfigProto()函数的功能和使用


一、功能

tf.ConfigProto()函数用在创建session的时候对session进行参数配置。
首先需要了解一下session,这样才可以更好的使用该函数。

二、session

session是tensorflow框架中的一个重要机制,负责分配和管理资源。Tensorflow依赖于一个高效的C++后端来进行计算,与后端的这个连接叫做session。
在tensorflow中使用图(graph)表示计算任务,为了进行计算,图必须在会话(session)里启动,会话能够将图的节点(op)分发到CPU或GPU设备上,同时执行op方法,这些方法执行后将产生的数据(tensor)返回。会话提供了一个run方法,用于执行计算图整体或部分节点。
简单的说就是使用会话Session启动图,调用Session.run()执行操作,另外需通过上下文管理机制with管理该会话,会话结束后自动释放资源,格式如下所示:

with tf.Session() as sess:
    sess.run(...)

备注:
在tensorflow中,将算法表示成计算图,计算图其实就是数据流图,图中的节点代表操作,边代表不同操作之间的数据流动。

三、使用实例

配置的内容可以包括并行线程数、GPU分配策略、运算超时时间等参数,最常用的两个是allow_soft_placement和log_device_placement.

config = tf.ConfigProto(allow_soft_placement=True, 
                        log_device_placement=True)
with tf.Session(config = config,...)

备注:
allow_soft_placement=True:如果是true,则允许tensorflow自动分配设备
log_device_placement=True:如果是true,记录每个节点分配到哪个设备上日志,用于方便调试

config = tf.ConfigProto() 
config.gpu_options.allow_growth = True
config.gpu_options.per_process_gpu_memory_fraction = 0.4
session = tf.Session(config=config) 

备注:
gpu_options.allow_growth:用于动态申请显存,从少到多慢慢增加gpu容量
gpu_options.per_process_gpu_memory_fraction:用于限制gpu使用率,拿出40%给进程使用

你可能感兴趣的:(session,ConfigProto)