使用Keras fit_generator和datagen.flow时出现内存错误

时间:2017-04-13 10:48:49

标签: python image-processing computer-vision deep-learning keras

我正在尝试在Keras中使用带有ImageGenerator类的datagen.flow。我收到以下内存错误:

Traceback (most recent call last):

File "scratch_6.py", line 284, in <module>

history = model.fit_generator(datagen.flow(train_X, train_y, 
batch_size=batch_size, save_to_dir='test_RA', save_format='png'),

File "/usr/local/lib/python3.5/dist-
packages/keras/preprocessing/image.py", line 455, in flow 
save_format=save_format)

File "/usr/local/lib/python3.5/dist-
packages/keras/preprocessing/image.py", line 764, in __init__
self.x = np.asarray(x, dtype=K.floatx())

File "/usr/local/lib/python3.5/dist-packages/numpy/core/numeric.py", line 531, in asarray
return array(a, dtype, copy=False, order=order)

MemoryError

我有128GB的RAM可用。我试过减少批量大小,但没有变化。任何帮助赞赏。谢谢。

1 个答案:

答案 0 :(得分:0)

这是所有深度学习算法的常见问题,其中数据集的大小非常大。 因此,对于这类问题,我们无法将所有数据加载到RAM中,因为计算和保存模型RAM内存需要大量的空间。同时,当我们将输入数据从int类型转换为floot时,它将需要输入图像的4倍空间。 所以解决这个问题的方法是对图像进行预处理,并完成数据增加并将整个数据保存到hdf5数据库中并存储到硬盘中,并且批量获取数据的时间逐批加载并训练模型,可能需要很长时间,但它不会完全消耗内存。

由于 库纳尔