2017-11-25 912 views
1

在用python編寫的深度學習程序中,我想要一次性在numpy數組中存儲大量圖像數據,並從該數組中隨機提取批量數據,但圖像數據太大,內存耗盡。 我們應該如何處理這種情況?每次檢索批處理數據時,我別無選擇,只能進行IO處理並從存儲中讀取圖像數據?我想讀取大量的圖像進行深度學習,但當內存不足時該如何解決?

+0

當內存即將用完時,操作系統會自動開始將數據移動到HDD。這是最糟糕的情況,尤其是您的硬盤緩慢,每個應用程序都會變慢。這也消耗CPU資源。所以至少你必須控制數據量不要達到最大內存大小。 –

回答

1

文件I/O可以解決這個問題,但會減慢Leanring進程,因爲FILE I/O是一項需要很長時間的任務。

但是,您可以嘗試使用多線程(例如,

https://github.com/stratospark/keras-multiprocess-image-data-generator

(我不知道你用的是什麼樣的架構)。

好歹回到基本思想:

挑選一些隨機的文件以及閱讀它們,開始訓練。在訓練期間開始第二個線程,它將再次讀取隨機文件。因此,您的學習線程無需等待新數據,因爲培訓過程可能比讀取過程花費更長的時間。

一些框架有這個功能已經實現,退房:

https://github.com/fchollet/keras/issues/1627

或:

https://github.com/pytorch/examples/blob/master/mnist_hogwild/train.py

+0

謝謝您的回答。我使用tensorflow。 – pie

+0

https://blog.metaflow.fr/tensorflow-how-to-optimise-your-input-pipeline-with-queues-and-multi-threading-e7c3874157e0 < - 這可能會讓你感興趣 – Kev1n91

相關問題