为什么Tensorflow CNN使用太多内存?

时间:2017-09-11 01:52:10

标签: machine-learning tensorflow deep-learning convolution data-science

我是深度学习的新手,我使用Tensorflow训练cnn进行图像识别。训练图像均为128像素×128像素×3通道。在我的网络中,有3个转换层,3个最大化层和1个完全连接的层。我有超过180,000个标记图像,所以我决定每批训练4000张图像。但是,训练过程甚至无法在我的笔记本电脑上运行,因为内存不够,所以我尝试使用64gb ram和2 * E5 CPU的服务器来训练它。这次它可以工作,但是内存的成本超过40GB。 我很困惑,我用于训练的图像不是高分辨率图像(只有128 * 128)。但是为什么仍然会花费太多内存(可能是批量大小太大......)。这是正常的吗?如果这是正常的,人们如何使用gpu训练神经网络,据我所知,gtx1080ti有11GB内存,但仍不足以训练我的网络。

2 个答案:

答案 0 :(得分:2)

4000声音一次听起来很多。我见过的大多数例子都是每批训练几百个。我想所有的图像可能会立刻被加载到内存中,因此内存使用率很高。

您可以尝试小批量培训吗? 1000,甚至500,看看内存使用量是否下降?

答案 1 :(得分:1)

对于TensorFlow,将存储BP计算的中间值(例如图层之间的渐变),因此输入的大小越大,消耗的内存就越多。因此,减少批量大小是减少内存使用的快速方法。