在 GPU 中训练后使用 CPU

数据挖掘 喀拉斯 张量流 显卡
2022-03-03 22:35:32

我正在使用带有 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

将 Keras 后端 Tensorflow 切换到 GPU

任何帮助将不胜感激,谢谢

1个回答

对于预测步骤,您是否使用与训练相同的批量大小?批量预测应该会降低内存使用量。