训练网络时,TensorFlow会占满gpu显存,在我的电脑上就是网络跑不起来,内存不够用,今天又遇到了这个情况,所以总结一下解决这个问题的方法。
用TensorFlow训练网络时对gpu的设置:
- 指定固定的gpu,我这里只有一个就不用进行这一步了。
- 在每个gpu上,让gpu动态申请内存,用多少申请多少。
- 直接限制gpu的使用率,自己设置数值
一、指定gpu
1、用环境变量指定
目前有0,1两个个GPU,找到空闲的GPU号,可以使用环境变量CUDA_VISIBLE_DEVICES:
环境变量的定义格式:
CUDA_VISIBLE_DEVICES=1
CUDA_VISIBLE_DEVICES=0,1
运行时输入以下命令运行程序:使用空闲的GPU 0
$ CUDA_VISIBLE_DEVICES=0 python trian.py
2、直接在代码中指定
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "2"
二、动态申请内存
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config)
三、限定gpu使用率
gpu_options=tf.GPUOptions(