{承接CNN学习入门,笔者在这里对Caffe官方网站上的相关介绍进行了翻译总结,欢迎大家交流指正}
本文基于此刻最新的release,Caffe-rc3:
2. Loss Layer:
Loss驱动整个学习过程,通过将网络输出与target比较,并将cost最小化来实现。
Loss本身是通过forward pass计算出来的,关于loss的gradient是由反向传播计算出来的。
Softmax:
1.网络类型:SoftmaxWithLoss
Softmax loss层计算了softmax模型关于输入的多分类logistic损失(UFLDL Softmax)。
理论上等价于一个softmax layer加上一个multinomial logistic loss layer,但是该层提供了更加稳定的数值梯度(涉及到链式求导法则造成的两部分求导)。
Sum-of-Squares/Euclidean:
1.网络类型:EuclideanLoss
Euclidean Loss Layer计算了两输入向量差异的平方和:
(1/2N)*(sum((x_1 - x_2).^2))
Hinge/Margin:
1.网络类型:HingeLoss
2.CPU版本实现:./src/caffe/layers/hinge_loss_layer.cpp
3.GPU版本实现:截止目前尚未实现
4.参数(HingeLossParameter hinge_loss_param):
4.1 Optional
4.1.1 norm [default L1]: 范数,当前只支持L1,L2范数。
5.Inputs
5.1 n * c * h * w 预测值
5.2 n * 1 * 1 * 1 Labels
6.Output
6.1 1 * 1 * 1 * 1 计算出的损失
E.g.
# 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 loss layer计算
one-vs-all hinge或平方折叶损失。
Sigmoid Cross-Entropy:
SigmoidCrossEntropyLoss
Infogain:
InfogainLoss
Accuracy and Top-k:
Accuracy(example)计算了关于target的输出值的正确率,事实上它并不是一个loss函数,也没有反传的步骤。