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

来源:互联网 发布:java 时间戳 编辑:程序博客网 时间:2024/05/21 15:59
Loss 设置了一个损失函数用来比较网络的输出和目标值,通过最小化损失来驱动网络的训练。
网络的损失通过前向操作计算,网络参数相对于损失函数的梯度则通过反向操作计算。

Softmax 损失
  • 层类型: SoftmaxWithLoss
softmax 损失层一般用于计算多类分类问题的损失, 等同于 softmax 层后跟随一个多变量 Logistic 回归损失层(multinomial logistic loss),但能提供数值上更稳定的梯度。

平方和/欧式损失 Sum-of-Squares / Euclidean
  • 层类型: EuclideanLoss
Euclidean 损失层用来计算两个输入差值的平方和:



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 用来计算网络输出相对目标值的准确率, 它实际上并不是一个损失层, 所以没有反传操作
0 0
原创粉丝点击