损失函数一直在下降,为什么识别率上不去。
1.最常见的原因:过拟合
过拟合值得单独开个章节。主要包括
1.数据量小,网络复杂
2.learning rate 比较高,又没有设置任何防止过拟合的机制
解决方法主要包括
1.简化模型,利用现有深度学习手段增加数据(翻转,平移,随机裁剪,imgaug)
2.利用 dropout层
3.利用正则化
2.你犯了错误:没有把数据规格化
图片的话,img/255是肯定的
3.你犯了错误:没有在分验证集之前打乱数据
因为validation_split操作不会为你shuffle数据,所以如果你的数据前一半标签全是1 ,后一半全是0,validation=0.5。恭喜你,你压根也分不对,你的validation准确率会一直为0.因为你拿所有的正样本训练,却想判断负样本。
4.pycharm的debug模式
如果使用pycharm,调试模式,会达到损失下降,但是准确率会卡成常数。
扫描二维码关注公众号,回复:
6241821 查看本文章
5.你犯了错误,数据和标签没有对上
有可能再读取自定义的数据库的时候出现问题,导致数据与标注不对应。比如第一张图片用第十张的标注
6.你的训练数据太少,validation数据太多,类别也太多
比如4000张训练,1000张validation,300类,这显然就是不合理的
7.最好使用预训练的权重
大多数流行的backone比如resnet都有再imagenet数据集上与训练过,那么使用这种权重,比起随即重新训练,显然要可靠不少