深度学习想读取大量图片,内存不够用怎么办?
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
在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