2017-11-25 913 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

相关问题