2017-04-13 423 views
3

當我試圖在Keras的ImageGenerator類使用datagen.flow。我得到以下內存錯誤:內存錯誤使用Keras fit_generator和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可用。我曾嘗試減少批量,但沒有改變。任何幫助讚賞。謝謝。

+0

你的照片的大小是多少? –

+0

224 * 224.它工作正常,如果我編寫自定義生成器,但dataset.flow失敗如上。 –

+0

嗯。可能memleak ...你籤一個更「手動」的例子如圖所示[手動](https://keras.io/preprocessing/image/#imagedatagenerator)來查找問題?可能與[this]有關(https://github.com/fchollet/keras/issues/3912)。 – Schmitzi

回答

0

這是所有深學習算法的共同問題,即數據集的大小是相當巨大的。 所以對於這類問題的所有數據,我們無法加載到RAM中,因爲計算,也爲保存模型RAM內存需要space.Also的戰利品,當我們從int類型轉換輸入數據到FLOOT,它會要採取輸入圖像的4倍空間。 所以這個問題的解決辦法是對圖像進行預處理,並完成數據增加並將整個數據保存到hdf5數據庫中並存儲到硬盤中,以及逐批獲取數據的時間並訓練模型,它可能需要很長時間,但它不會完全消耗內存。

謝謝 Kunal