我正在使用带有 Nvidia gtx765M(2GB) GPU 的 tensorflow-gpu 1.10.0 和 keras-gpu 2.2.4,操作系统是 Win8.1-64 位 - 16GB RAM。
我可以用 560x560 像素图像和批量大小 = 1 训练一个网络,但是在训练结束后,当我尝试测试/预测时,我收到以下错误:
ResourceExhaustedError: OOM when allocating tensor with shape[20,16,560,560] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
[[Node: conv2d_2/convolution = Conv2D[T=DT_FLOAT, data_format="NCHW", dilations=[1, 1, 1, 1], padding="SAME", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/device:GPU:0"](activation_1/Relu, conv2d_2/kernel/read)]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.
估计是内存问题。
所以我的问题是,是否可以先使用 GPU 进行训练,然后切换 CPU 来预测一个 Jupyter 笔记本中的一些结果?
我们可以在脚本中释放 Windows 中的 GPU 内存吗?
我找到了这两个主题,但我认为我们应该在脚本的开头使用。我想要的是训练后切换。
https://github.com/keras-team/keras/issues/4613
任何帮助将不胜感激,谢谢