【caffe学习笔记】loss layer 损失层

时间:2021-11-16 04:12:45
Loss 设置了一个损失函数用来比较网络的输出和目标值,通过最小化损失来驱动网络的训练。 网络的损失通过前向操作计算,网络参数相对于损失函数的梯度则通过反向操作计算。
Softmax 损失
  • 层类型: SoftmaxWithLoss
softmax 损失层一般用于计算多类分类问题的损失, 等同于 softmax 层后跟随一个多变量 Logistic 回归损失层(multinomial logistic loss),但能提供数值上更稳定的梯度。
平方和/欧式损失 Sum-of-Squares / Euclidean
  • 层类型: EuclideanLoss
Euclidean 损失层用来计算两个输入差值的平方和: 【caffe学习笔记】loss layer 损失层


Hinge / Margin 损失
  • 层类型: HingeLoss
  • CPU implementation: ./src/caffe/layers/hinge_loss_layer.cpp
  • CUDA GPU implementation: 未实现
参数 Optional(可选的)
  • norm [default L1]:正则项类型,目前有L1和L2
输入
  • n * c * h * w 预测值
  • n * 1 * 1 * 1 真实标签
输出
  • 1 * 1 * 1 * 1 计算的损失
例子
# L1 Norm
layer {
  name: "loss"
  type: "HingeLoss"
  bottom: "pred"
  bottom: "label"
}

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

hinge 损失层用来计算 one-vs-all hinge 或者 squared hinge 损失。
交叉熵损失 Sigmoid Cross-Entropy SigmoidCrossEntropyLoss
信息熵损失 Infogain InfogainLoss
准确率 Accuracy and Top-k Accuracy 用来计算网络输出相对目标值的准确率, 它实际上并不是一个损失层, 所以没有反传操作