为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不耗尽内存的情况下将 14,000 个图像数据集加载到变量中?

如何在不耗尽内存的情况下将 14,000 个图像数据集加载到变量中?

慕尼黑8549860 2023-05-16 14:24:07
我正在尝试创建一个函数来将包含 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。
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

您需要分批读取图像,而不是将整个数据集加载到内存中。如果您使用的是 tensorflow,请使用 ImageDataGenerator.flowfrom 目录。如果您的数据没有组织到子目录中,那么您将需要创建一个 python 生成器来批量读取数据。您可以在此处查看如何构建这样的生成器. 将批量大小设置为一个不会填满您的内存的值,例如 30。



查看完整回答
反对 回复 2023-05-16
  • 1 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信