版权声明:本文为博主原创文章,如需转载请附上博文链接 https://blog.csdn.net/wendygelin/article/details/88684351
每一次训练迭代,都会向前传播,产生loss值。
Loss部分在solver文件中,有两个参数:
1. average_loss
默认值是1,Loss为单个iteration对应的loss;
当设置average_loss = n , 则Loss为n个Loss的均值,相当于做个均值滤波。
2. weight_decay
为正则项在Loss函数中的系数。如果过拟合,调大这个参数;如果欠拟合,调小这个参数;
(代码可以在solver.cpp文件中查看)
最终正则项的惩罚 是solver.prtotxt中设置的惩罚项weight_decay与layer中的decay_mult的乘积。若不想让某一些参数加入正则项中,则将layer中的对应param中的参数decay_mult设置为0。例如,一般把bias的decay_mult设置为0,代表bias不加入到正则项的优化中。
layer中有非零的loss_weight,这层的最后blob乘上对应的loss_weight累加到Loss中。
在显示过程中,显示的Loss为n(average_loss的值)个Loss平均后的值,且显式的loss并没有加入正则项的惩罚: