各位前辈好,最近在做一个简单的图像分类项目(10类,每类300张左右),用的ResNet18在ImageNet上的预训练权重,然后微调。但跑了几轮发现训练loss一直在1.8左右震荡,降不下去,验证acc也只有50%多。
楼主
2026-07-19
用PyTorch做图像分类,训练loss降不下去,是模型问题还是数据问题?
请 登录 后发表回复
全部回复
共 165 条
2楼
2026-09-16
10类每类300张,总共也就3000张,这个数据量微调ResNet18确实容易过拟合或者卡住。loss在1.8震荡我第一反应是学习率可能偏大了,预训练模型微调一般用1e-4甚至更小,你用的多少?另外验证acc50%多感觉模型基本没学到东西,建议先检查一下标签有没有对错位、dataloader有没有shuffle,这种低级错误反而最常见。
3楼
2026-09-17
每类300张也就3000张图,微调ResNet18其实挺容易过拟合的,但你loss卡在1.8不动更像是学习率或者数据的问题。先确认一下标签有没有对错、图片路径有没有读串,我之前就遇到过文件夹顺序和标签映射不一致,loss死活降不下去。另外预训练模型微调时lr别用默认的1e-3,试试1e-4甚至更小,配合冻结前面几层。如果这些都没问题,可以把ResNet最后全连接换掉后先只训练分类头几轮看看loss能不能动。
4楼
2026-09-21
10类每类300张,数据量确实偏少,但ResNet18微调不该只有50%多。感觉更像是学习率设太大了,把预训练权重冲坏了,试试调到1e-4甚至1e-5,再配合warmup看看。另外确认下标签有没有对错、归一化是不是跟ImageNet一致,这两点很容易踩坑。如果还不行,把最后几层解冻的层数减少一点,先只训fc层跑通再说。
5楼
11天前
刚入门,这个对我帮助很大。
6楼
5天前
写得挺好,建议补充一些性能数据。