如何处理不适合pybrain内存的数据

时间:2015-05-24 09:15:57

标签: python machine-learning neural-network pybrain

我有训练集,包括~2k 300x400 pxs灰度图像。整个系列的尺寸约为20 Mb。我正在尝试用pybrain神经网络对这些图像进行分类。问题是当我加载数据集SupervisedDataSet时,我的小python脚本消耗大约8 Gb的内存实际上太多了。

所以我有疑问:如何使用10 gig ram笔记本电脑学习这个数据集?有没有办法在学习的同时“按需”加载数据集的一部分?有没有办法将数据集拆分成更小的部分并逐个将其提供给网络?我在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

感谢您提供任何帮助。

0 个答案:

没有答案