Python 如何处理大脑中不适合记忆的数据

Python 如何处理大脑中不适合记忆的数据,python,machine-learning,neural-network,pybrain,Python,Machine Learning,Neural Network,Pybrain,我有一个由~2k 300x400像素灰度图像组成的训练集。整个集合的大小约为20 Mb。我试图用pybrain神经网络对这些图像进行分类。问题是当我加载datasetSupervisedDataSet时,我的小python脚本消耗了大约8GB的内存,这实际上太多了 所以我有一个问题:我如何用10G内存的笔记本电脑学习这个数据集?在学习过程中,是否有方法“按需”加载部分数据集?有没有办法将数据集分割成更小的部分,然后一个接一个地送入网络?我在pybrain文档中找不到答案 以下是我如何构建数据集:

我有一个由~2k 300x400像素灰度图像组成的训练集。整个集合的大小约为20 Mb。我试图用pybrain神经网络对这些图像进行分类。问题是当我加载dataset
SupervisedDataSet
时,我的小python脚本消耗了大约8GB的内存,这实际上太多了

所以我有一个问题:我如何用10G内存的笔记本电脑学习这个数据集?在学习过程中,是否有方法“按需”加载部分数据集?有没有办法将数据集分割成更小的部分,然后一个接一个地送入网络?我在pybrain文档中找不到答案

以下是我如何构建数据集:

# returns ([image bytes], category) where category = 1 for apple, category = 0 for banana
def load_images(dir):
    data = []
    for d, n, files in os.walk(dir):
        for f in files:
            category = int(f.startswith('apple_'))
            im = Image.open('{}/{}'.format(d, f))
            data.append((bytearray(im.tobytes()), category))

    return data


def load_data_set(dir):
    print 'loading images'
    data = load_images(dir)

    print 'creating dataset'
    ds = SupervisedDataSet(120000, 1) #120000 bytes each image
    for d in data:
        ds.addSample(d[0], (d[1],))

    return ds

感谢您的帮助。

不要将其全部加载到内存中!;以较小的块重复进行训练。@JamesMills说得很好!我一直在想。实际上,我是pybrain的新手,我在两个函数中迷失了
train()
trainuntlconvergence()
。如何正确使用拆分数据集?如果我在数据集的不同部分调用
train()
n次,那么在整个数据集上调用一次
trainuntlconvergence()
会得到相同的结果吗?老实说;我对那个图书馆也一无所知:)对不起!但一般来说,如果您的系统无法处理8GB的数据,请不要将其加载到工作内存中:)@JamesMills我的图像集大小为20Mbs,我没想到数据集结构会占用8Gig的空间。。。这就是为什么我在这里提出我的问题:)