caffe层解读系列-softmax_loss

23591人阅读 评论(14) 收藏 举报
分类:

Loss Function

softmax_loss的计算包含2步:

(1)计算softmax归一化概率

归一化概率

(2)计算损失

这里写图片描述

这里以batchsize=1的2分类为例:
设最后一层的输出为[1.2 0.8],减去最大值后为[0 -0.4],
然后计算归一化概率得到[0.5987 0.4013],
假如该图片的label为1,则Loss=-log0.4013=0.9130

可选参数

(1) ignore_label

int型变量,默认为空。
如果指定值,则label等于ignore_label的样本将不参与Loss计算,并且反向传播时梯度直接置0.

(2) normalize

bool型变量,即Loss会除以参与计算的样本总数;否则Loss等于直接求和

(3) normalization
enum型变量,默认为VALID,具体代表情况如下面的代码。

  enum NormalizationMode {
    // Divide by the number of examples in the batch times spatial dimensions.
    // Outputs that receive the ignore label will NOT be ignored in computing the normalization factor.
    FULL = 0;

    // Divide by the total number of output locations that do not take the
    // ignore_label.  If ignore_label is not set, this behaves like FULL.
    VALID = 1;

    // Divide by the batch size.
    BATCH_SIZE = 2;

    // 
    NONE = 3;
  }

归一化case的判断:

(1) 如果未设置normalization,但是设置了normalize。
则有normalize==1 -> 归一化方式为VALID
normalize==0 -> 归一化方式为BATCH_SIZE

(2) 一旦设置normalization,归一化方式则由normalization决定,不再考虑normalize。

使用方法


layer {
  name: "loss"
  type: "SoftmaxWithLoss"
  bottom: "fc1"
  bottom: "label"
  top: "loss"
  top: "prob"
  loss_param{
    ignore_label:0
    normalize: 1
    normalization: FULL
  }
}

扩展使用

(1) 如上面的使用方法中所示,softmax_loss可以有2个输出,第二个输出为归一化后的softmax概率

(2) 最常见的情况是,一个样本对应一个标量label,但softmax_loss支持更高维度的label。
当bottom[0]的输入维度为N*C*H*W时,
其中N为一个batch中的样本数量,C为channel通常等于分类数,H*W为feature_map的大小通常它们等于1.

此时我们的一个样本对应的label不再是一个标量了,而应该是一个长度为H*W的矢量,里面的数值范围为0——C-1之间的整数。
至于之后的Loss计算,则采用相同的处理。

查看评论

Caffe框架源码剖析(9)—损失层SoftmaxWithLossLayer

类SoftmaxWithLossLayer包含类SoftmaxLayer的实例。其中SoftmaxLayer层在正向传导函数中将100*10的bottom_data,通过计算得到100*10的top_...
  • tianrolin
  • tianrolin
  • 2016-09-20 13:22:30
  • 11273

梳理caffe代码softmaxWithLoss(二十三)

继续梳理caffe中的loss的softmaxWithLoss函数。 caffe中的softmaxWithLoss其实是:  softmaxWithLoss = Multinomial Logi...
  • langb2014
  • langb2014
  • 2016-08-10 19:04:04
  • 6071

caffe源码学习:softmaxWithLoss前向计算

caffe源码学习:softmaxWithLoss      在caffe中softmaxwithLoss是由两部分组成,softmax+Loss组成,其实主要就是为了caffe框架的可扩展性。 ...
  • liyaohhh
  • liyaohhh
  • 2016-08-04 09:44:05
  • 10381

caffe小问题(2):softmaxWithLoss

caffe中的softmaxWithLoss其实是: softmaxWithLoss = Multinomial Logistic Loss Layer + Softmax Layer其中: Mu...
  • tina_ttl
  • tina_ttl
  • 2016-06-01 16:35:40
  • 6226

caffe SoftmaxWithLoss 层

loss 函数:      深度 学习 的 目标, 通过调整  w,b 参数, 得到一个 更小的 loss caffe 中的 loss 在Forward阶段产生     在Softmax...
  • stone_linclon
  • stone_linclon
  • 2016-06-17 16:29:46
  • 721

caffe softmax_loss_layer 对于梯度下降的理解

咱先讲下梯度下降,然后对应caffe里的代码。 还是老样子,贴一个网址,人家讲softmax讲的挺好的。 http://www.bubuko.com/infodetail-601263.html ...
  • l494926429
  • l494926429
  • 2016-05-11 16:24:58
  • 4381

caffe中带权重的softmaxloss实现(一)

长话短说,先看一个简单的shicai  Weighted Softmax Loss Layer for Caffe Usage: (1)caffe.proto文件修改以下部分,增加pos_mu...
  • langb2014
  • langb2014
  • 2016-11-02 10:50:28
  • 6333

梳理caffe代码loss(二十二)

下面是一个博友对于NG课程的翻译: 机器学习算法一般都是对损失函数(Loss Function)求最优,大部分损失函数都是包含两项:损失误差项(loss term)以及正则项(regularizati...
  • langb2014
  • langb2014
  • 2016-08-08 23:21:36
  • 6779

卷积神经网络系列之softmax,softmax loss和cross entropy的讲解

我们知道卷积神经网络(CNN)在图像领域的应用已经非常广泛了,一般一个CNN网络主要包含卷积层,池化层(pooling),全连接层,损失层等。虽然现在已经开源了很多深度学习框架(比如MxNet,Caf...
  • u014380165
  • u014380165
  • 2017-08-17 07:47:51
  • 17300
    个人资料
    持之以恒
    等级:
    访问量: 78万+
    积分: 7575
    排名: 3603