当前位置: 代码迷 >> 综合 >> Caffe loss
  详细解决方案

Caffe loss

热度:27   发布时间:2024-01-11 15:08:18.0

 经过这一通训练,总算可以得到相应的模型了(具体操作网上已经烂大街了),我们要是修改caffe参数,甚至是修改caffe内部程序,必须是以输出结果为动力,现在我们就看看我们关心的caffe输出都有哪些,虽然每一层都可以输出,但是我们最关心的有Loss层。

       深度学习就是通过最小化输出和目标的Loss来驱动的。

       值得注意的是:以mnist为例,我们所得到的ip2层已经是我们预测(分类/回归)的结果,可以将ip2输出(此时输出的就是Predict Label)

1.softmax

     类型:SoftmaxWithLoss

     适合场景图像多类分类问题

     示例

[plain]  view plain copy
  1. layer   
  2. {  
  3.   name: "loss"  
  4.   type: "SoftmaxWithLoss"  
  5.   bottom: "ip2"  
  6.   bottom: "label"  
  7.   top: "loss"  
  8. }  

         可选参数

      (1)ignore_label:int类型,默认值为空

如果对其赋值,则label=ignore_label的时候不参与Loss值计算,并且反向传播时梯度直接赋值为0

      (2)normalize:bool类型

如果为true,Loss会处于参与计算的样本总数输出,如果为false,则直接Loss求和输出

      (3)normalization:enum类型,默认值为valid

           如果未设置normalization,但是设置了normalize:

                   <1>normalize=1:valid型

                   <2>normalize=0:batch_size型

如果设置normalization,一切由normalization决定:

     解释:Loss值越小,表明其预测效果越好 

2.Sum-of-Squares/Euclidean(欧式距离)

     适合场景:线性回归问题

     类型:EuclideanLoss

     示例

[html]  view plain copy
  1. layer   
  2. {  
  3.   name: "loss"  
  4.   type: "EuclideanLoss"  
  5.   bottom: "ip2"  
  6.   bottom: "score"  
  7.   top: "loss"  
  8. }  

     解释:Loss值越小,表明其预测效果越好

3.Hinge/Margin(铰链损失函数)

      适合场景:主要在SVM分类器中

      类型:HingeLoss

      示例

[html]  view plain copy
  1. layer   
  2. {  
  3.   name: "loss"  
  4.   type: "EuclideanLoss"  
  5.   bottom: "ip2"  
  6.   bottom: "score"  
  7.   top: "loss"  
  8. }  

     可选参数

      (1)inorm[default L1]:选择L1或者L2范数

4.Sigmoid Cross-Entropy

      类型SigmoidCrossEntropyLoss

      示例

[plain]  view plain copy
  1. layer   
  2. {  
  3.   name: "loss"  
  4.   type: "SigmoidCrossEntropyLoss"  
  5.   bottom: "ip2"  
  6.   bottom: "label"  
  7.   top: "loss"  
  8. }  

5.Infogain Loss

      类型:InfogainLoss

      示例

[plain]  view plain copy
  1. layer   
  2. {  
  3.   name: "loss"  
  4.   type: "InfogainLoss"  
  5.   bottom: "score"  
  6.   bottom: "label"  
  7.   top: "loss"  
  8. }  

6.Accuracy and Top-k

      用来计算输出和目标的准确率,事实上,这不是一个loss,而且没有backward这一步

      类型:Accuracy

      示例

[plain]  view plain copy
  1. layer   
  2. {  
  3.   name: "accuracy"  
  4.   type: "Accuracy"  
  5.   bottom: "ip2"  
  6.   bottom: "label"  
  7.   top: "accuracy"  
  8. }