【问题标题】:Memory Error in machine learning image processing机器学习图像处理中的内存错误
【发布时间】:2018-04-22 20:21:12
【问题描述】:

我正在构建一个图像处理分类器,这是我代码的一小部分,我的问题是第一行表明我有一个整数数组 img_data_list。我将其转换为浮动,但这给了我一个Memory Error。

我有一个 7 Gb 和 12 Gb RAM 的数据集。

img_data = np.array(img_data_list)
img_data = img_data.astype('float32')
img_data /= 255
print (img_data.shape)

【问题讨论】:

  • 看看使用np.divide(..out = img_data) 是否有帮助。文档 - docs.scipy.org/doc/numpy-1.13.0/reference/generated/…。您可以使用np.asarray(img_data_list) 来避免在那里复制,但我想浮动转换无论如何都会复制。所以,只是结合:np.asarray(img_data_list).astype('float32').
  • 关于 Divakar np.asarray(img_data_list).astype('float32') 的注释对我不起作用,请给我另一个解决方案
  • 好的,谢谢您的帮助,如果我不将 numpy 数组转换为浮点类型,您能告诉我怎么办吗?我想知道我们为什么要这样做?
  • 好吧,我们除以 255,因为我猜我们正在某种形式的标准化。这完全取决于您打算如何对数据进行后期处理,以及是否可以优化内存。
  • n 注意@Divakar 我正在制作一个图像处理分类器,其中我有 66 个类,所以你认为每个类需要多少图像

标签: python numpy image-processing machine-learning


【解决方案1】:

你在哪里困惑?你有一个 7G 数据集。您的代码需要三个副本:原始数据集、NumPy 数组和 that 的浮点转换。你没有足够的内存来制作第二个副本。

显而易见的解决方案是在您的机器上放置更多 RAM;您拥有的配置不足以解决您要解决的问题。另一种可能性是在输入时将您的数据转换为float32,以便在 RAM 中只有一个数据副本。

【讨论】:

  • 修剪的注释我正在制作一个图像处理分类器,其中我有 66 个类,所以你认为每个类需要多少图像
  • (1) 这是一个单独的问题。 (2) 更适合统计组; (3) 这些信息不足以做出推荐——这取决于图像的复杂性、它们的异同以及模型的复杂性。
  • 这里的最终问题是您拥有的数据集是否能产生您需要的准确性。我建议您减少数据集并分批运行它确实适合 RAM。如有必要,将其减少为单图像批次。
  • 还有一件事我想问,我也在构建文本处理分类器,在同样的场景下,我的问题是我应该如何为每个类准备我的数据集任何建议
  • (1) 这是一个单独的问题;它完全单独发布。 (2) 你的问题太笼统了;问题高度依赖于您未指定的因素。 (3) 在这里提问之前,您需要先进行研究:之前有很多问题以及深度学习讨论都涉及输入准备。
猜你喜欢
  • 2019-05-06
  • 1970-01-01
  • 2021-12-06
  • 2021-12-19
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-18
相关资源
最近更新 更多