程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 SMOTE 过采样批量进行图像增强,而不会耗尽 RAM大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 SMOTE 过采样批量进行图像增强,而不会耗尽 RAM?

开发过程中遇到使用 SMOTE 过采样批量进行图像增强,而不会耗尽 RAM的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 SMOTE 过采样批量进行图像增强,而不会耗尽 RAM的解决方法建议,希望对你解决使用 SMOTE 过采样批量进行图像增强,而不会耗尽 RAM有所启发或帮助;

我正在尝试使用不平衡的数据集来馈送神经网络。我正在使用 colab。我在 kaggle 上找到了这段代码,它使用 keras ImageDataGenerator 进行增强和 SMOTE 对数据进行过采样:

增强:

ZOOM = [.99,1.01]
BRIGHT_RANGE = [0.8,1.2]
HORZ_FliP = True
FILL_MODE = "constant"
DATA_FORMAT = "chAnnels_last"

work_dr = ImageDataGenerator(rescale = 1./255,brightness_range=BRIGHT_RANGE,zoom_range=ZOOM,data_format=DATA_FORMAT,fill_mode=FILL_MODE,horizontal_flip=HORZ_Flip)

Train_data_gen = work_dr.flow_from_directory(directory=WORK_DIR,target_size=DIM,batch_size=6500,shuffle=falsE)

然后他使用 next() 迭代器加载图像:

Train_data,Train_labels = Train_data_gen.next()
print(Train_data.shape,Train_labels.shapE)

给出以下输出:

(6400,176,3) (6400,4)

此时它已经消耗了我在 Colab 上大约 70% 的 RAM,更不用说加载图像所需的时间了。请注意,批量大小设置为 6500,这是一个非常大的值,但是如果我将其设置为 32 或 64 之类的值,那么当我使用 next() 时只会加载第一批 然后,为了对数据进行过采样,他使用了 SMOTE:

#Performing over-sampling of the data,since the classes are imbalanced

sm = SMOTE(random_state=42)

Train_data,Train_labels = sm.fit_resample(Train_data.reshape(-1,img_SIZE * img_SIZE * 3),Train_labels)

Train_data = Train_data.reshape(-1,img_SIZE,3)

print(Train_data.shape,Train_labels.shapE)

这应该给出以下输出:

(12800,3) (12800,4)

但相反,它使我的内存过载,并且由于 RAM 不足导致 Colab 崩溃。我不太擅长编码,所以我很难实现我想要的。我想要的是将成批的增强和过采样数据提供给我的神经网络,而无需一次加载整个数据集,从而节省内存。我的问题是,有没有办法做到这一点?如果是这样,你能告诉我怎么做吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的使用 SMOTE 过采样批量进行图像增强,而不会耗尽 RAM全部内容,希望文章能够帮你解决使用 SMOTE 过采样批量进行图像增强,而不会耗尽 RAM所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:使用