在用python编写的深度学习程序中,我想立即将大量图像数据存储在numpy数组中,并从该数组中随机提取批量数据,但图像数据太大而内存耗尽。 我们该如何处理这类案件?每次检索批量数据时,我别无选择,只能进行IO处理并从存储中读取图像数据?
答案 0 :(得分:1)
文件I / O可以解决问题,但会减慢精益过程,因为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