如何解决如何在不耗尽内存的情况下将14,000个图像数据集加载到变量中?
我正在尝试创建一个函数,以将14,000张图像的大图像数据集加载到变量中,但遇到内存(RAM)问题。
我要制作的是类似cifar100.load_data
的函数,但对我来说不起作用。
我定义的函数如下:
def load_data():
trn_x_names=os.listdir('data/train_x')
trn_y_names=os.listdir('data/train_y')
trn_x_list=[]
trn_y_list=[]
for image in trn_x_names[0:]:
img=cv2.imread('data/train_x/%s'%image)
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
trn_x_list.append(img)
for image in trn_y_names[0:]:
img=cv2.imread('data/train_y/%s'%image)
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
trn_y_list.append(img)
x_train= np.array(trn_x_list)
y_train= np.array(trn_y_list)
return x_train,y_train
我首先一张一张地加载所有图像,将它们添加到相应的列表中,最后将这些列表更改为numpy
数组,并将其分配给某些变量并返回它们。但是在途中,我遇到了RAM问题,因为它消耗了我100%的RAM。
解决方法
您需要分批读取图像,而不是将整个数据集加载到内存中。如果您正在使用tensorflow,请使用ImageDataGenerator.flowfrom目录。文档为here.。如果您的数据未组织到子目录中,则需要创建一个python生成器,以分批读取数据。您可以看到如何构建这样的生成器here.。将批次大小设置为一个值30,该值将不会占用您的内存。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。