我有大约80万个RGBx 256x256的图像,超过7GB.
我想将它们用作卷积神经网络中的训练数据,并希望将它们与标签一起放在cPickle文件中.
现在,这需要占用大量内存,因为它需要与我的硬盘内存交换,并且几乎消耗掉所有内存.
这是个坏主意吗?
在不引起太多内存问题的情况下,加载到CNN或腌制它们的更聪明/更实用的方法是什么?
这就是代码的样子
import numpy as np
import cPickle
from PIL import Image
import sys,os
pixels = []
labels = []
traindata = []
data=[]
for subdir, dirs, files in os.walk('images'):
curdir=''
for file in files:
if file.endswith(".jpg"):
floc=str(subdir)+'/'+str(file)
im= Image.open(floc)
pix=np.array(im.getdata())
pixels.append(pix)
labels.append(1)
pixels=np.array(pixels)
labels=np.array(labels)
traindata.append(pixels)
traindata.append(labels)
traindata=np.array(traindata)
.....# do the same for validation and test data
.....# put all data and labels into 'data' array
cPickle.dump(data,open('data.pkl','wb'))
Run Code Online (Sandbox Code Playgroud)