DeepLearning(基于caffe)实战项目(3)--我们关心的caffe输出

来源:互联网 发布:ndcg java 编辑:程序博客网 时间:2024/05/29 02:33

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

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

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

1.softmax

     类型:SoftmaxWithLoss

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

     示例

layer {  name: "loss"  type: "SoftmaxWithLoss"  bottom: "ip2"  bottom: "label"  top: "loss"}

        可选参数

      (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

     示例

layer {  name: "loss"  type: "EuclideanLoss"  bottom: "ip2"  bottom: "score"  top: "loss"}

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

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

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

      类型:HingeLoss

      示例

layer {  name: "loss"  type: "EuclideanLoss"  bottom: "ip2"  bottom: "score"  top: "loss"}

     可选参数

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

4.Sigmoid Cross-Entropy

      类型SigmoidCrossEntropyLoss

      示例

layer {  name: "loss"  type: "SigmoidCrossEntropyLoss"  bottom: "ip2"  bottom: "label"  top: "loss"}

5.Infogain Loss

      类型:InfogainLoss

      示例

layer {  name: "loss"  type: "InfogainLoss"  bottom: "score"  bottom: "label"  top: "loss"}

6.Accuracy and Top-k

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

      类型:Accuracy

      示例

layer {  name: "accuracy"  type: "Accuracy"  bottom: "ip2"  bottom: "label"  top: "accuracy"}

阅读全文
1 0
原创粉丝点击