在用python编写的深度学习程序中,我想一次性将大量图像数据存储在numpy数组中,并从该数组中随机提取批量数据,但图像数据太大,内存耗尽。 遇到这样的情况我们应该如何处理呢?没办法,每次取批量数据的时候,都要进行IO处理,从存储中读取图像数据?
最佳答案
文件 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
关于python - 我想读取大量图像进行深度学习,但是内存不足时如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47485373/