【图像分类】记录一个天坑:二分类网络使用CrossEntropyLoss,loss一直在0.69不收敛的问题
【摘要】
最近在尝试用CrossEntropyLoss(),实现猫狗图像分类的功能。遇到了一个奇怪的问题:loss一直停留在0.69附近,我查了查loss函数的公式,公式如下:
网络预测给出的二类概率向量为[0.5,0.5],也就是a和1-a都是0.5,不管y取值0/1,整个的平均loss就是-ln(0.5)=0.69,这样网络根本没有学习...
最近在尝试用CrossEntropyLoss(),实现猫狗图像分类的功能。遇到了一个奇怪的问题:loss一直停留在0.69附近,我查了查loss函数的公式,公式如下:
网络预测给出的二类概率向量为[0.5,0.5],也就是a和1-a都是0.5,不管y取值0/1,整个的平均loss就是-ln(0.5)=0.69,这样网络根本没有学习到东西。
我用的模型是resnet18,后来尝试使用预训练模型发现loss可以收敛,但是不用预训练模型就拉跨了。
在网上查找了很多解决方案,放在我的模型里都没有起作用。直到我发现了这篇文章:
13. 你是否应用了过量的数据增强?
数据增强有正则化效果。过量的数据增强,加上其它形式的正则化(权重 L2,dropout操作,等等)可能会导致网络欠拟合。
突然想到我是不是用的数据增强不对,或者对于我的模型来说不适用。于是我把增强的代码注释了
-
transform = transforms.Compose([
-
transforms.Resize((128, 128)),
-
# transforms.RandomVerticalFlip(),
-
# transforms.RandomCrop(50),
-
# transforms.ColorJitter(brightness=0.5, contrast=0.5, hue=0.5),
-
transforms.ToTensor(),
-
transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
-
-
])
然后就可以收敛了:
看来图像增强不能乱用,用的不好还能起负作用。
文章来源: wanghao.blog.csdn.net,作者:AI浩,版权归原作者所有,如需转载,请联系作者。
原文链接:wanghao.blog.csdn.net/article/details/117353112
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)