【问题标题】:numpy memory error when loading images加载图像时出现numpy内存错误
【发布时间】:2018-03-06 14:53:47
【问题描述】:

我想在 numpy 数组中加载一个巨大的图像数据集,以使其作为我正在尝试训练的 cnn 模型的训练数据。当我尝试如下创建一个 numpy 数组时,它给了我内存错误。 np.ndarray(shape=(250000, 3, 512, 512)) 我怎么能在 python 中加载如此庞大的数据集?

【问题讨论】:

  • 尝试使用dtype=np.uint8。这是 RGB 图像所能达到的最低值。
  • 也不行
  • 好吧,如果你没有 ~24GB RAM 用于 numpy,你将无法加载 1/4mio。图片。
  • 如果您没有相应的 PC 规格,您就无法一次加载那么多。
  • 构造一个生成器,它会输出您在单个批次中使用的图像数量。在循环生成器时调用 fit() 方法。它对我有用。

标签: python numpy memory


【解决方案1】:

请告诉我们您使用的是哪种机器学习框架(例如 Keras、Tensorflow、Pytorch)。根据框架的不同,有几种方法可以避免将整个数据集加载到 RAM 上(这对于大型数据集是不可能的)


在这种情况下,您可以使用 Keras 的 fit_generator 函数。这将允许您将图像加载到批次中,而不是将整个数据集加载到 RAM 中。您的生成器可以是任何 python 函数,但在您的情况下,可能会使用带有 flow_from_directory 方法的ImageDataGenerator

看看下面的例子:

https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html

https://stanford.edu/~shervine/blog/keras-how-to-generate-data-on-the-fly.html

【讨论】:

  • 发布 cmets 作为答案不会让您更快地获得评论权限。
  • 我在 theano 框架之上使用 keras。我需要加载数据集来训练 CNN 回归模型
猜你喜欢
  • 1970-01-01
  • 2015-04-14
  • 2016-01-06
  • 2014-01-11
  • 2012-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多