Tensorflow Session 配置选项解析

在 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 以减少日志占用的空间。

更多阅读

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 岁月静好,伊人自老。悠悠流年,划过脸庞。谁偷染了你的发丝,还是你,早已不是记忆中的那个你。说得出来的改变,说不出来...
    梧恩雨阅读 3,612评论 0 3
  • 自古书生多遗恨, 从来霸王少踌龊。 纵使天意高难问, 也赴周廷细细度。 风云际会男儿色, 碧血丹心真英模。 寻遍天...
    九哥的歌阅读 206评论 1 2