首页 > 其他 > 详细

在二分类问题中,准确率一直处于50%上下的解决方法

时间:2019-09-11 20:27:35      阅读:317      评论:0      收藏:0      [点我收藏+]

最近在 猫狗识别 项目中,不知为何准确率(训练集准确率和验证集准确率)一直处于0.5左右,这说明网络根本没有学习。后来查阅了许多他人的经验,并做了总结。

首先谈谈我的是如何解决的:

  • 网络结构:AlexNet
  • 优化器:Adam (这里正是问题所在)
  • 框架:PyTorch

关于优化器,我最开始使用的的是 torch.optim.Adam(),但是训练100个Epoch后,准确率始终在 49% ~ 50%。

解决方法: 换个优化器!我使用的是 torch.optim.SGD(),其他的或许也行,但我还没有尝试。

Note:

出现以上问题时,我们会发现 loss 是 0.69,这是因为输出 0, 1 的概率都是0.5,而 \(-\ln 0.5=0.69\)


网络上也有一些解决方法,可以对照检查自己的代码:

  1. 训练数据需要打乱,要检查每此batch是否都是一个类别,如果是,则没有办法优化;
  2. 检查网络是不是没有回传梯度,而是只做了前向运算;
  3. 检查输入数据是否有做标准化,可能直接传入 \(0 \sim 255\) 像素进去了;
  4. 二分类问题中 0.5 的 acc 接近随机猜测的值,可以检查下标签是否标错;
  5. 检查参数有没有初始化;
  6. 检查第一层的卷积输出是否正常,是不是全 0 之类的;
  7. 尝试不同的 Learning Rate;
  8. 检查是否在 logit 那层加了激活函数,导致 logits 有问题,例如全为 0,经过 softmax 后就是 0.5了

在二分类问题中,准确率一直处于50%上下的解决方法

原文:https://www.cnblogs.com/xxxxxxxxx/p/11508020.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!