1、在以下环境运行tf或keras可能汇报下面的错误:
- 环境:
- Ubuntu
- CUDA10.1
- tensorflow1.14 / keras 2.2.4
- 错误(查看显存充足的情况下):
on-OK-status: CudaLaunchKernel(FillPhiloxRandomKernelLaunch, num_blocks, block_size, 0, d.stream(), gen, data, size, dist) status: Internal: out of memory
2、解决:
2.1 网上有解决方案说在config = tf.ConfigProto()
中增加以下两句
config.allow_soft_placement=True #如果你指定的设备不存在,允许TF自动分配设备
config.gpu_options.per_process_gpu_memory_fraction=0.9 #分配百分之七十的显存给程序使用,避免内存溢出,可以自己调整
但是经过测试并没有效果,如果使用这两句出现错误不妨使用下面的方法试一试:
2.2 解决方法的本质是设置显卡ID:
可以在python文件内部指定显卡ID如:os.environ["CUDA_VISIBLE_DEVICES"] = "2,3"
,但是我发现这并不会起作用。
正确的做法是在文件外部先指定显卡ID:CUDA_VISIBLE_DEVICES="0,1" python train.py
如遇问题欢迎进行留言,相互讨论学习。