caffe学习(7)损失层、通用层

原创 2016年11月07日 16:19:29

Caffe Layers
Caffe学习系列(5):其它常用层及参数,denny402

损失层Loss Layers


损失通过将输出与目标进行比较,并不断优化减小loss。

Softmax(with loss)

  • 层类型:SoftmaxWithLoss
  • 示例:

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

在概念上等同于softmax layer+多项对数损失层(multinomial logistic loss layer),但提供了更稳定的梯度。softmax只是输出每一类的概率,并没有与label做比较。

Sum-of-Squares / Euclidean

  • 层类型:EuclideanLoss
    这是比较传统的求偏差的方法,12NNi=1x1ix2i22,直接计算欧氏距离。

Hinge / Margin

  • 层类型:HingeLoss
  • 参数(HingeLossParameter hinge_loss_param):

    • 可选
      • norm [default L1]:应该是正则化方法,目前只有L1、L2。
    • 输入:
      • n * c * h * w Predictions预测值
      • n * 1 * 1 * 1 Labels标签
    • 输出:1 * 1 * 1 * 1 Computed Loss
  • 示例

# L1 Norm L1正则
layer {
  name: "loss"
  type: "HingeLoss"
  bottom: "pred"
  bottom: "label"
}

# L2 Norm L2正则
layer {
  name: "loss"
  type: "HingeLoss"
  bottom: "pred"
  bottom: "label"
  top: "loss"
  hinge_loss_param {
    norm: L2
  }
}

Hinge loss主要用于SVM。

Accuracy

  • 层类型:Accuracy
  • 示例

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

    只有test阶段才有,因此需要加入include参数。它实际上不是损失并且没有后退步骤。

通用层Common Layers


Inner Product

  • 层类型:InnerProduct
  • 参数 (InnerProductParameter inner_product_param):
    • 必须参数
      • num_output (c_o):滤波器数量。
    • 推荐参数
      • weight_filler [default type: ‘constant’ value: 0]:全职初始化方式、值。还可以选择”xavier”算法来进行初始化,也可以设置为”gaussian”。
    • 可选参数
      • bias_filler [default type: ‘constant’ value: 0]:偏置初始化。
      • bias_term [default true]: 是否启用偏置项。
  • 输入:n * c_i * h_i * w_i
  • 输出:n * c_o * 1 * 1
  • 示例:

    layer {
      name: "fc8"
      type: "InnerProduct"
      # learning rate and decay multipliers for the weights
      param { lr_mult: 1 decay_mult: 1 }
    
    # learning rate and decay multipliers for the biases
    
      param { lr_mult: 2 decay_mult: 0 }
      inner_product_param {
            num_output: 1000
            weight_filler {
                  type: "gaussian"
                  std: 0.01
                }
            bias_filler {
                  type: "constant"
                  value: 0
                }
          }
      bottom: "fc7"
      top: "fc8"
    }

Reshape

  • 层类型:Reshape
  • 参数 (ReshapeParameter reshape_param):

    • 可选参数:
      • shape
  • 输入:单独的blob

  • 输出:变形后的blob
  • 示例:

    layer {
        name: "reshape"
        type: "Reshape"
        bottom: "input"
        top: "output"
        reshape_param {
              shape {
                dim: 0  # copy the dimension from below
                dim: 2
                dim: 3
                dim: -1 # infer it from the other dimensions
              }
        }
    }

这一操作不改变数据,只改变维度,也没有在过程中拷贝数据。输出的尺寸有shape参数的值规定,正数是对应的维度,除此外还有两个特殊值:

  • 0表示复制底层对应的维度。bottom第一维度值为2,top第一维度也是2。
  • -1表示从其他维度推断。为了保证数据总数不变,可以根据其他维数值计算。

特别的,当时用参数:reshape_param { shape { dim: 0 dim: -1 } }时,reshape层相当于flatten层,将n * c * h * w的数据变为n * (c*h*w)。

Concatenation

  • 层类型: Concat
  • 参数 (ConcatParameter concat_param):
    • 可选参数
      • axis [default 1]: 0表示沿着数量(n),1表示沿着通道(C)。
    • 输入:n_i * c_i * h * w 对于每个blob输入,i= 1 到 K。
    • 输出:
      • 当 axis = 0: (n_1 + n_2 + … + n_K) * c_1 * h * w, 所有的c_i应该相同。
      • 当 axis = 1: n_1 * (c_1 + c_2 + … + c_K) * h * w, 所有的n_i 应该相同。

这个层把多个blob连接为一个blob。


层的学习暂时到这里。。

版权声明:本文为博主原创文章,转载请标注出处。

相关文章推荐

Caffe中Loss Layer原理的简单梳理

1.SoftmaxWithLoss对一对多的分类任务计算多项逻辑斯蒂损失,并通过softmax传递预测值,来获得各类的概率分布。该层可以分解为SoftmaxLayer+MultinomialLogis...

【Caffe实践】损失函数解析

Caffe中的损失函数解析

caffe添加损失层PrecisionRecallLosslayer(一)

先就按照tangwei2014 学习了一下triplet loss。感谢tangwei博主 =====================================================...

Caffe中损失层简介

caffe中实现了多种损失层,分别适用于多种场合。

caffe中的损失函数

损失函数,一般由两项组成,一项是loss term,另外一项是regularization term。 J=L+R 先说损失项loss,再说regularization项。 1. 分...

caffe 中的损失函数分析以及loss function

caffe 中的损失函数分析 http://blog.csdn.net/u014114990/article/details/47802993 http://blog....
  • zkl99999
  • zkl99999
  • 2016年03月29日 14:01
  • 13241

Caffe路模型定义

1、第一层:数据层 layers { name: "mnist" type: DATA data_param { source: "mnist_train_lmdb" ...
  • YLH9604
  • YLH9604
  • 2016年03月21日 16:39
  • 531

caffe中各层定义

Vision Layers ConvolutionPoolingLocal Response Normalization LRNim2col Loss Layers SoftmaxSum...

Caffe中的损失函数解析

Caffe中的损失函数解析 导言 在有监督的机器学习中,需要有标签数据,与此同时,也需要有对应的损失函数(Loss Function)。 在Caffe中,目前已经实现了一些损失函数,包括...

caffe中的loss函数简单介绍

损失函数,一般由两项组成,一项是loss term,另外一项是regularization term。 J=L+R 先说损失项loss,再说regularization项。 1. 分对得分1,分...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:caffe学习(7)损失层、通用层
举报原因:
原因补充:

(最多只允许输入30个字)