美文网首页程序员
Tensorflow Session 配置选项解析

Tensorflow Session 配置选项解析

作者: 叶俊贤 | 来源:发表于2017-04-28 15:30 被阅读744次

在 Tensorflow 中需要通过创建 Session 类实例来为当前计算图注册会话,然后通过会话的 run 方法或者是 tf.Tensor.eval 来执行计算,得到所需操作的输出。

通常而言,在平时的学习和 demo 测试中采用 Session 的默认设置已经足够了。但是当我们需要编写多 GPU 程序还要保证程序的可移植性,又或者因为生产需要而要求更准确地控制会话的时候就涉及到 Session 的配置。

Session 可以通过 ConfigProto 类来进行配置。ConfigProto 包含有许多属性,能够配置并行的线程数、GPU 的分配策略、设备日记等等属性,更多属性详情请自行参考 Tensorflow 官网 API 介绍。

在这众多的属性当中,最常用的一般是 log_device_placementallow_soft_placement 。配置的设置方式如下:

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

allow_soft_placement

allow_soft_placement 是布尔类型的属性,默认情况下是 False 。当将它的值设置为 True 的时候,在以下任意一条条件满足时,程序会将原先在 GPU 上的计算迁移到 CPU 中完成:

  1. 运算无法在 GPU 上执行
  2. 没有 GPU 资源
  3. 运算输入包含对 CPU 计算结果的引用

考虑到不同机器中的 GPU 驱动版本、数量等都可能存在差异,因此为了提升程序的可移植性,可以将该选项设置为 True ,从而避免了在其它机器上运行程序时因为 GPU 支持问题而直接抛出异常。

log_device_placement

log_device_placement 也是一个布尔型属性,默认为 False 。将该属性设置为 True 的时候,程序日志中将记录计算图中每个节点是在哪个设备中进行计算的。在编写与测试程序的过程中设置为 True 可以方便调试,而在生产中可以将该属性设置为 False 以减少日志占用的空间。

更多阅读

相关文章

网友评论

    本文标题:Tensorflow Session 配置选项解析

    本文链接:https://www.haomeiwen.com/subject/mtfazttx.html