在 CNN 模型中使用更多层时出现内存错误

数据挖掘 Python 张量流 美国有线电视新闻网
2021-10-11 14:15:53

在我的 dell core i7 - 16GB RAM - 4gb 960m GPU 笔记本电脑上,我正在开展一个使用 3d CNN 对肺部 CT 图像进行分类的项目。我正在使用 tensorflow 的 CPU 版本。图像准备为 numpy 数组大小 (25,50,50)。

我的 CNN 模型有 2 个 conv 层、2 个 maxpool 层、1 个 FC 层和输出层。使用这种架构,我可以使用大约(5000 到 6000)个样本来训练模型。添加更多层后,我的模型现在有 6 个卷积层、3 个最大池层、FC 和输出层。我的问题是在用超过 1000 个样本更改架构后,我的内存被填满并且出现内存错误。我尝试制作较小的批次,但每次都会遇到相同的错误。我有两个问题:

  1. 为什么通过添加更多层模型需要更多内存?

  2. 有没有办法处理这类问题?

2个回答
  1. 更多的层意味着您的网络有更多的参数,这反过来意味着需要更多的内存空间来存储这些参数。

  2. 唯一的解决方案(除了增加计算机的内存)是减小网络的大小。关于这一点的几点建议:首先,3-D CNN 比 2-D 需要更多的空间。一种想法可能是转向二维。除此之外,参数最多的层是FC层。这些有时是多余的。我建议先减小它们的大小。

除了 提出的观点之外MzdR,您还可以尝试使用生成器。由于您是模型,因此在训练时实际上不需要将所有图像都保存在内存中,因此我认为生成器应该可以很好地发挥作用。

从stackoverflow检查这个问题。当您进行内存交易时,生成器非常酷。但如果这也失败了,请尝试减小 FC 层的大小。