python - 我想读取大量图像进行深度学习,但是内存不足时如何解决?

标签 python numpy memory deep-learning large-data

在用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/

相关文章:

python - 合并两个 numpy 数组,一个作为键,另一个作为值

python - 启动一个子进程,等待其完成,然后在 Python 中检索数据

python - 为什么 dict() 中的 key 比 Python3 中的 dict.get(key) 更快?

python - 在 Python 中根据索引位置转换值

linux - Linux 如何知道它在 x86-64 架构上的最大物理地址范围?

java - 调整巨大数组的大小

c++ - 通过复制到函数将指针传递给动态分配的数组会产生意外结果

python - 两个numpy ndarrays的字典序比较

python - 给定尺寸的值范围的组合

python - 按元素有效地分组数组