排除其他原因后,可能是这样的
因为keras在训练时会一次占用完所有的内存,因此会修改源代码如下
但是在微调训练时总会报OOM错误,因此需要将之前分配的显存空间注释
系统中自带python环境,其位置在这里:
源码地址:/usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py
anaconda 虚拟环境,其位置在这里:
源码地址:/home/zhex/anaconda3/envs/keras/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py
else:
if _SESSION is None:
if not os.environ.get(‘OMP_NUM_THREADS’):
config = tf.ConfigProto(allow_soft_placement=True)
# config.gpu_options.per_process_gpu_memory_fraction = 0.2 #zhengxiangzhong add
print(‘keras/backend/tensorflow_backend.py: config.gpu_options.per_process_gpu_memory_fraction = 0.2 #zhengxiangzhong’)
else:
num_thread = int(os.environ.get(‘OMP_NUM_THREADS’))
config = tf.ConfigProto(intra_op_parallelism_threads=num_thread, allow_soft_placement=True)
# config.gpu_options.per_process_gpu_memory_fraction = 0.2 #zhengxiangzhong add
print(‘config.gpu_options.per_process_gpu_memory_fraction = 0.2 #zhengxiangzhong’)
_SESSION = tf.Session(config=config)
session = _SESSION