tf.ConfigProto()主要的作用是配置tf.Session的运算方式,比如gpu运算或者cpu运算 tf.ConfigProto一般用在创建session的时候,用来对session进行参数配置。
参数:
参数 | 作用 |
---|
log_device_placement | 是否打印设备分配日志 | inter_op_parallelism_threads | 设置线程一个操作内部并行运算的线程数,比如矩阵乘法,如果设置为0,则表示以最优的线程数处理 | intra_op_parallelism_threads | 设置多个操作并行运算的线程数,比如 c = a + b,d = e + f . 可以并行运算 | allow_soft_placement | 有时候,不同的设备,它的cpu和gpu是不同的,如果将这个选项设置成True,那么当运行设备不满足要求时,会自动分配GPU或者CPU(如果你指定的设备不存在,允许TF自动分配设备) | gpu_options | gpu配置项,一般用于限制GPU资源的使用 |
gpu_options
config = tf.ConfigProto()
为了加快运行效率,TensorFlow在初始化时会尝试分配所有可用的GPU显存资源给自己,这在多人使用的服务器上工作就会导致GPU占用,别人无法使用GPU工作的情况。tf提供了两种控制GPU资源使用的方法:
- 动态申请显存
config.gpu_options.allow_growth = True :默认开启 Tensorflow 的 session 之后,就会占用几乎所有的显存,这样的话速度会比较快。使用allow_growth,刚一开始分配少量的GPU容量,然后按需慢慢的增加,由于不会释放内存,所以会导致碎片(当使用GPU时候,Tensorflow运行自动慢慢达到最大GPU的内存) - 限制GPU的使用率
config.gpu_options.per_process_gpu_memory_fraction = 0.4:当使用GPU时,设置GPU内存使用最大比例
tf.ConfigProto()使用参数的两种方法:
- 第一种实在构造config对象时直接赋值,如下:
tf.ConfigProto(log_device_placement=True,allow_soft_placement=True)
- 第二种是先构造config对象,再对构造的config对象进行赋值,如下:
config = tf.ConfigProto()
config.log_device_placement= True
config.allow_soft_placement=True
让参数设置生效的方法
session = tf.Session(config=config)
|