类SoftmaxWithLossLayer包含类SoftmaxLayer的实例。其中SoftmaxLayer层在正向传导函数中将64*10的bottom_data,通过计算得到64*10的top_data。这可以理解为输入数据为64个样本,每个样本特征数量为10,计算这64个样本分别在10个类别上的概率。公式如下,其中n=10,
SoftmaxWithLossLayer层利用SoftmaxLayer层的输出计算损失,公式如下,其中N为一个batch的大小(MNIST训练时batch_size为64,测试时batch_size为100)。 根据Cross-Entropy的定义有,
其中y^y^为标签值,kk为标签为1所对应的的神经元序号。
反向传导时,计算偏导
代码
layer {
name: "loss_1"
type: "SoftmaxWithLoss"
bottom: "score_1"
bottom: "gt_label"
top: "loss_1"
loss_weight: 1
}