论深度学习训练过程中数据集打乱的重要性

浅浅记录一下今天遇到的一个很有意思的问题:

今天在重新训练一个之前跑过的模型时候,突然发现训练损失一直居高不下,一直保持在0.6左右,就感觉很奇怪,为什么之前训练的时候没有问题,之前训练的时候loss是正常下降的,为什么今天重新把代码拉出来跑的时候,就出现loss不下降的问题呢?带着这个问题,我就狠狠调试,发现代码逻辑啥的都没有问题,为此调试了一整天,然后刚刚坐在实验室的时候,突然想着要不把中间结果输出看看,然后我就单独挑了几例数据训练一下,结果一看,发现我的每一个epoch加载的数据顺序是一样的,也就是说,我的DataLoader中的shuffle这个参数是False,按理来说,shuffle设置为False,也就是数据集的加载顺序不变,这应该不会影响模型的训练,确实,对于自然图像来说,由于训练集中的每张图像都是独立,所以即使数据集的加载顺序不变,也不影响模型的训练,但是,由于我研究的领域是医学图像,主要是脑肿瘤的MRI图像,一般MRI图像都是3D数据,我会把这个3D数据中沿着轴向面提取slice,这样一来,数据集之间是有内在关联的,即前后两张图片是极为相似的,所以如果此时再将shuffle设置为False的话,就会严重影响模型的训练,在我将shuffle改为True后,我的模型有可以正常训练了!

目前以上说法只是我对于这个问题的一个猜想,不确定是否正确,但是实验观察的现象确实是将shuffle改为True以后,模型就可以正常训练了。

相关推荐
多巴胺与内啡肽.2 分钟前
OpenCV进阶操作:风格迁移以及DNN模块解析
人工智能·opencv·dnn
szxinmai主板定制专家34 分钟前
基于TI AM6442+FPGA解决方案,支持6网口,4路CAN,8个串口
arm开发·人工智能·fpga开发
龙湾开发1 小时前
轻量级高性能推理引擎MNN 学习笔记 02.MNN主要API
人工智能·笔记·学习·机器学习·mnn
CopyLower1 小时前
Java与AI技术结合:从机器学习到生成式AI的实践
java·人工智能·机器学习
workflower1 小时前
使用谱聚类将相似度矩阵分为2类
人工智能·深度学习·算法·机器学习·设计模式·软件工程·软件需求
jndingxin2 小时前
OpenCV CUDA 模块中在 GPU 上对图像或矩阵进行 翻转(镜像)操作的一个函数 flip()
人工智能·opencv
囚生CY2 小时前
【速写】TRL:Trainer的细节与思考(PPO/DPO+LoRA可行性)
人工智能
杨德兴2 小时前
3.3 阶数的作用
人工智能·学习
望获linux2 小时前
医疗实时操作系统方案:手术机器人的微秒级运动控制
人工智能·机器人·实时操作系统·rtos·嵌入式软件·医疗自动化
仓颉编程语言2 小时前
仓颉Magic亮相GOSIM AI Paris 2025:掀起开源AI框架新热潮
人工智能·华为·开源·鸿蒙·仓颉编程语言