tensorflow在训练时默认占用全部GPU的显存。spa
能够经过如下方式解决该问题:命令行
一、在构造tf.Session()时候经过传递tf.GPUOptions做为可选配置参数的一部分来显式地指定须要分配的显存比例,以下所示:code
# 假若有12GB的显存并使用其中的4GB: gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333) sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))
per_process_gpu_memory_fraction指定了每一个GPU进程中使用显存的上限,但它只能均匀做用于全部GPU,没法对不一样GPU设置不一样的上限blog
二、尝试以下设置:进程
config = tf.ConfigProto() config.gpu_options.allow_growth=True sess = tf.Session(config=config)
当allow_growth设置为True时,分配器将不会指定全部的GPU内存,而是根据需求增加内存
三、指定GPU编号:io
import os os.environ["CUDA_VISIBLE_DEVICES"] = "0" 或者在脚本或者命令行中指定 export CUDA_VISIBLE_DEVICES=0