深度学习想读取大量图片,内存不够用怎么办?

I want to read a large amount of images for deep learning, but what is the solution for when there is insufficient memory?

在python写的深度学习程序中,想把大量的图片数据一次性存入numpy数组,然后从数组中随机抽取batch数据,但是图片数据太大内存不足 运行。 我们应该如何处理这些情况?每次你取batch数据的时候,我都只能做IO处理,从storage中读取图像数据?

文件 I/O 可以解决问题,但会减慢学习过程,因为文件 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