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

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

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

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

相关推荐
Java后端的Ai之路几秒前
Python 进阶探索30 - Python中的装饰器
开发语言·人工智能·python·文件处理·装饰器模式
海宇AI1 分钟前
Java数据工程:利用海宇婚恋风险报告优化高端婚恋实名与涉诉核验合规体验
java·人工智能
zhangfeng11332 分钟前
Metal 是苹果(Apple)自研的计算软件栈 DirectX 12 / HLSL Vulkan / SPIR-V CUDA ROCm
人工智能
打码的老程是远篁3 分钟前
手把手教你玩转大模型——3. Transformer 的位置编码——模型怎么知道谁在前,谁在后?
人工智能·算法
ADark3 分钟前
FDE 入门 · 03|Palantir 二十年前埋下的伏笔
人工智能
海宇数科3 分钟前
Go数据工程:利用海宇婚恋风险报告优化实名制严肃婚恋交友合规体验
人工智能·go
xiwc6 分钟前
我用 MCP + 多 Agent 搭了一条自动化内容发布流水线
人工智能·mcp
lucas_AI6 分钟前
Hinton 下场写 RSI 论文:今天一年的 AI 进步,未来可能只要 5 周
人工智能·llm
黑妹天下第一乖9 分钟前
第 05 讲:阿加犀 AidCV 图像处理加速与 OpenCV 一致开发实战
开发语言·图像处理·人工智能·嵌入式硬件·数码相机·opencv·计算机视觉
天远API9 分钟前
PHP数据工程:利用天远名下车辆车牌查询A优化智慧物业一户多车登记合规体验
人工智能