在训练CNN时,loss稳定在log(类别数)

参见知乎问题!

https://www.zhihu.com/question/275774218

很多框架都会有一个问题,当卷积 weight NaN 之后,卷积的 output 会变成 NaN。然后过了一个 FC,就变成正常的数字了,但是这时候所有 channel 的 output 值相同。

建议打印中间卷积层 output 以检查是否是这个情况。

相关问题:解决Caffe训练过程中loss不变问题 - CSDN博客

  • loss = −log(p),p=0.5的时候,loss刚好是0.69。看看输出是否都是一样的
  • 挑几个层看看,weight值是否NaN
  • 检查是否代码问题,是否有bug;调参数、learning rate等看看

我以前也碰到过这个问题,0.69, 2.302表明网络就是在随机的猜。我遇到过下面两种原因

1.可能是你的代码有bug,尤其注意一下读数据和读label有没有搞错,以及data augmentation的有没有写出大问题。

2.你有没有加weight decay,这点很关键。你可以看看你网络学出的weight尤其是bias,是不是很大(比如100,-80啊这种), 尤其是最后的fc层。




原文地址:https://www.cnblogs.com/Allen-rg/p/9008951.html