tf.ConfigProto主要用来配置生成的会话

下面给出了通过ConfigProto配置会话的方法:

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

通过ConfigProto可以配置类似并行的线程数、GPU分配策略、运算超时时间等参数。在这些参数中,最常使用的有两个。

第一个是allow_soft_placement,这是一个布尔型的参数,当它为True时,在以下任意一个条件成立时,GPU上的运算可以放到CPU上进行:

1.运算无法在GPU上执行。

2.没有GPU资源(比如运算被指定在第二个GPU上运行,但是机器只有一个GPU)。

3.运算输入包含对CPU计算结果的引用。

这个参数的默认值为False,但是为了使得代码的可移植性更强,在有GPU的环境下这个参数一般会被设置为True。不同的GPU驱动版本可能对计算的支持有略微的区别,通过将allow_soft_placement参数设置为True,当某些运算无法被当前GPU支持时,可以自动调整到CPU上,而不是报错。类似地,通过将这个参数设置为True,可以让程序在拥有不同数量的GPU机器上顺利运行。

第二个使用得比较多的配置参数是log_device_placement。这也是一个布尔型的参数,当它为True时日志中将会记录每个节点被安排在哪个设备上以方便调试,在生产环境中将这个参数设置为False可以减少日志量。

猜你喜欢

转载自blog.csdn.net/weixin_36670529/article/details/89487523