tf.IneractiveSession

2022-06-05 10:55:41 浏览数 (2)

在交互式环境下(比如python脚本或者jupyter的编辑器下),通过设置默认会话的方式来获取张量的取值更加方便。所以tensorflow提供了一种在交互式环境下直接构建默认会话的函数。这个函数就是就是tf.IneractiveSession。使用这个函数会自动生成的会话注册为默认会话。以下代码展示了tf.InteractiveSession函数的用法。

代码语言:javascript复制
sess = tf.InteractiveSession()
print(result.eval())
sess.close()

 通过tf.InteractiveSession函数可以省去将产生的会话注册为默认会话的过程。无论使用哪种方法都可以通过ConfigProto Buffer来配置需要生成的会话。下面给出了通过ConfigProto配置会话的方法:

代码语言:javascript复制
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可以减少日志量。

0 人点赞