首先梳理一下一些常用的loss层。
1.SoftmaxWithLoss
对一对多的分类任务计算多项逻辑斯蒂损失,并通过softmax传递预测值,来获得各类的概率分布。该层可以分解为SoftmaxLayer+MultinomialLogisticLossLayer,但它的梯度计算在数值上更为稳健。在测试时,该层可用SoftmaxLayer替代。
2.EuclideanLoss
对回归任务计算欧氏距离(L2)损失,可用于最小二乘回归任务。
3.HingeLoss
对一对多的分类任务计算铰链损失。
4.SigmoidCrossEntropyLoss
计算交叉熵(逻辑斯蒂)损失,通常用于以概率形式预测目标。该层可以分解为SigmoidLayer+CrossEntropyLayer,但它的梯度计算在数值上更为稳健。在测试时,该层可用SigmoidLayer替代。
5.MultinomialLogisticLossLayer
参考(含原理):https://blog.csdn.net/amds123/article/details/56847550
loss层的一个重要参数是loss_weight,决定了该层产生的loss在总loss中的比重。
在以loss结尾的layer里面, loss_wight的大小为1。在不是以loss结尾的layer里面(即非loss layer的层),loss_weight为0。
因此一个网络中如果存在多个损失层的话,需要给每个损失层加上loss_weight参数,不加的话默认为1.0。