【图像分类】记录一个天坑:二分类网络使用CrossEntropyLoss,loss一直在0.69不收敛的问题

举报
AI浩 发表于 2021/12/23 00:23:22 2021/12/23
【摘要】 最近在尝试用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可以收敛,但是不用预训练模型就拉跨了。

在网上查找了很多解决方案,放在我的模型里都没有起作用。直到我发现了这篇文章:

神经网络训练常见坑 - 知乎 (zhihu.com)

13. 你是否应用了过量的数据增强?

数据增强有正则化效果。过量的数据增强,加上其它形式的正则化(权重 L2,dropout操作,等等)可能会导致网络欠拟合。

突然想到我是不是用的数据增强不对,或者对于我的模型来说不适用。于是我把增强的代码注释了


  
  1. transform = transforms.Compose([
  2. transforms.Resize((128, 128)),
  3. # transforms.RandomVerticalFlip(),
  4. # transforms.RandomCrop(50),
  5. # transforms.ColorJitter(brightness=0.5, contrast=0.5, hue=0.5),
  6. transforms.ToTensor(),
  7. transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
  8. ])

然后就可以收敛了:

看来图像增强不能乱用,用的不好还能起负作用。

文章来源: wanghao.blog.csdn.net,作者:AI浩,版权归原作者所有,如需转载,请联系作者。

原文链接:wanghao.blog.csdn.net/article/details/117353112

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。