我有训练集,包括~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
感谢您提供任何帮助。