CUDA_ERROR_OUT_OF_MEMORY:内存不足。如何增加批量大小?

数据挖掘 深度学习 显卡
2022-02-15 22:46:19

我有一个 GPU:GTX 1050,内存约为 4GB。

我尝试使用 192x192pix 和 batch=7 的 Mask RCNN。我收到一个错误: CUDA_ERROR_OUT_OF_MEMORY: out of memory

我发现了这个

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config, ...)

  File "<ipython-input-2-0806c9f06bd0>", line 3
    session = tf.Session(config=config, ...)
                                       ^
SyntaxError: positional argument follows keyword argument
3个回答

环境:
1.CUDA 10.0
2.cuNDD 10.0 3.tensorflow 1.14.0
4.pip install opencv-contrib-python
5.git clone https://github.com/thtrieu/darkflow
6.允许GPU内存增长

在此处输入图像描述

参考

可能是您的 GPU 无法管理批量大小为 8 或 16 的完整模型(Mask RCNN)。

我建议尝试使用批量大小 1 来查看模型是否可以运行,然后慢慢增加以找到它中断的点。

您也可以在 Tensorflow 中使用配置,但它本质上会做同样的事情 - 当您运行 Tensorflow 会话时,它不会立即阻塞所有内存。它只需要它需要的东西,它(给定一个固定的模型)将由批量大小定义。


您应该将代码示例更改为:

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config)

如果您使用的是 Jupyter Notebook,则应运行以下代码来清除 GPU 内存,以便完美训练

import gc
gc.collect()

如果问题仍然存在,请使用较小的批量大小,例如 4。