Caffe源码 - SoftmaxWithLossLayer

SoftmaxWithLossLayer 层可以分解为 SoftmaxLayer + MultinomialLogisticLoss 层的组合,不过其梯度计算更加数值稳定.

测试时,该网络层可以由 SoftmaxLayer 层代替.

1. SoftmaxLayer

Softmax 是 Logtistic 函数的一种泛化, 计算得到的 $N$ 维向量满足:(1) 向量的每个元素值均在区间 [0, 1]; (2) 向量的所有元素之和为 1.

$${ Softmax(x_i) = \frac{e^{x_i}}{\sum_i e^{x_i}} }$$

返回每一个标签label 的概率.

# python 实现
import numpy as np

def softmax(x):
    y = np.exp(x)

    return y/np.sum(y)

2. MultinomialLogisticLoss

计算的是交叉熵 loss.

${ L = \frac{1}{N} \sum_{n=1}^N \lbrace -log(pred_n, label_n) \rbrace }$

3. SoftmaxWithLoss

多分类损失函数, 交叉熵形式:

${ L = \frac{1}{N} \sum_{n=1}^N \lbrace -log(Softmax(x_n), label_n) \rbrace }$

From [caffe小问题(2):softmaxWithLoss]

Related

[1] - PyTorch - torch.nn.CrossEntropyLoss

Last modification:October 9th, 2018 at 11:11 pm