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学习(7)损失层、通用层

损失层Loss Layers损失通过将输出与目标进行比较,并不断优化减小loss。Softmax(with loss) 层类型:SoftmaxWithLoss 示例:layer { name: "...
  • Yan_Joy
  • Yan_Joy
  • 2016年11月07日 16:19
  • 1635

caffe 自定义层/添加自己的损失函数

自定义激活层文献[2] 以循序渐进的学习方式先后介绍了: google protocol buffe , Blob ,SyncedMemory ,shared_ptr ,layer,data l...
  • xuluhui123
  • xuluhui123
  • 2017年03月12日 10:17
  • 3328

【Caffe实践】损失函数解析

Caffe中的损失函数解析
  • chenriwei2
  • chenriwei2
  • 2015年04月26日 20:33
  • 28038

caffe 加权交叉熵损失函数层(weighted sigmoid_cross_entropy_loss_layer)添加方法

用卷积神经网络实现边缘检测的论文”Holistically-Nested Edge Detection”中使用了加权交叉熵损失函数(sigmoid_cross_entropy_loss_layer),...
  • majinlei121
  • majinlei121
  • 2017年12月24日 13:04
  • 70

Caffe 损失层中loss_weight 如何存储?

一个网络中如果存在多个损失层的话,需要给每个损失层加上loss_weight参数,不加的话默认为1.0。 但是loss_weight如何存储的呢?这里我是从ContrastiveLossLayer:...
  • u012938704
  • u012938704
  • 2017年05月12日 10:17
  • 254

深度学习caffe:损失函数

机器学习的目的就是通过对训练样本输出与真实值不一致的进行惩罚,得到损失Loss,然后采用一定的优化算法对loss进行最小优化,进而得到合理的网络权值。本文介绍Caffe中含有的常见的LossLayer...
  • liujiandu101
  • liujiandu101
  • 2017年02月14日 18:07
  • 1318

DL学习笔记【7】caffe参数调节-Pooling层

转自:http://www.cnblogs.com/lutingting/p/5240677.html 在caffe中,网络的结构由prototxt文件中给出,由一些列的Layer(层)组成...
  • Sun7_She
  • Sun7_She
  • 2016年07月26日 13:23
  • 4580

caffe 加权交叉熵损失函数 SigmoidCrossEntropyLoss

  • 2017年12月24日 23:13
  • 4KB
  • 下载

深度学习与计算机视觉系列(7)_神经网络数据预处理,正则化与损失函数

1. 引言 上一节我们讲完了各种激励函数的优缺点和选择,以及网络的大小以及正则化对神经网络的影响。这一节我们讲一讲输入数据预处理、正则化以及损失函数设定的一些事情。 2. 数据与网络的设定 前一节提到...
  • yaoqiang2011
  • yaoqiang2011
  • 2016年01月03日 16:43
  • 47086

深度学习与计算机视觉系列(7)_神经网络数据预处理,正则化与损失函数

作者:寒小阳 && 龙心尘  时间:2016年1月。  出处:  http://blog.csdn.net/han_xiaoyang/article/details/50451460  htt...
  • qq_26898461
  • qq_26898461
  • 2016年01月05日 15:40
  • 776
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:caffe学习(7)损失层、通用层
举报原因:
原因补充:

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