Numpy - 切片图像时的最小内存使用量?

时间:2017-05-06 15:51:07

标签: python arrays numpy memory slice

我在python中遇到内存使用问题,但还没有找到令人满意的解决方案。

问题很简单: 我将图像集合为形状(n_samples, size_image)的numpy数组。我需要以相同的方式切割每个图像,并将这些切片一次性提供给分类算法。 如何在不重复内存中的数据的情况下获取numpy数组切片? 天真地,因为切片很简单"视图"对于原始数据,我假设必须有一种方法来进行切片而不在内存中复制数据。 在处理大型数据集(如MNIST手写数字数据集)时,这个问题至关重要。

我尝试使用numpy.lib.stride_tricks.as_strided找到解决方案,但很难让它在图像集合上运行。

类似的玩具问题是以对记忆友好的方式对scikit手写数字进行切片。

from sklearn.datasets import load_digits
digits = load_digits()
X = digits.data

X具有形状(1797, 64),即图片为8x8元素。 窗口大小为6x6时,它将为每个图像提供(8-6 + 1)*(8-6 + 1)= 9个大小为36的切片,从而生成形状sliced_X的数组(16173, 36)。 / p>

现在的问题是,如果不使用太多内存,你如何从Xsliced_X

0 个答案:

没有答案