zl程序教程

您现在的位置是:首页 >  其他

当前栏目

DL之SoftmaxWithLoss:SoftmaxWithLoss算法(Softmax+交叉熵误差)简介、使用方法、应用案例之详细攻略

案例方法算法应用 详细 简介 攻略 交叉
2023-09-14 09:04:47 时间

DL之SoftmaxWithLoss:SoftmaxWithLoss算法(Softmax函数+交叉熵误差)简介、使用方法、应用案例之详细攻略

 

 

 

 

 

目录

SoftmaxWithLoss算法简介

1、Softmax-with-Loss层的计算图

2、正向传播

3、反向传播

4、总结

SoftmaxWithLoss算法使用方法

SoftmaxWithLoss算法应用案例


 

 

 

 

 

 

SoftmaxWithLoss算法简介

         softmax 函数称为softmax 层,交叉熵误差称为Cross Entropy Error 层,两者的组合称为Softmax-with-Loss层。

1、Softmax-with-Loss层的计算图

         计算图中假定了一个进行3 类别分类的神经网络。从前面的层输入的是(a1, a2, a3),softmax 层输出(y1, y2, y3)。此外,教师标签是(t1, t2, t3),Cross Entropy Error 层输出损失L。Softmac-with-Loss 层的反向传播的结果为(y1 − t1, y2 − t2, y3 − t3)

 

2、正向传播

Softmax 层和Cross Entropy Error 层的内容

Softmax层

                                                           输出记为(y1, y2, y3)

Cross Entropy Error 层

 

3、反向传播

求这个计算图的反向传播时,要注意下面几点:

  1. 反向传播的初始值(下图中最右边的值)是1(因为dL/dL=1)。
  2. “ ×” 节点的反向传播将正向传播时的输入值翻转,乘以上游传过来的导数后,再传给下游。
  3. “ +” 节点将上游传来的导数原封不动地传给下游。
  4. “ log” 节点的反向传播遵从下式。
Cross Entropy Error 层

 输出记为(y1, y2, y3),结果(-t1/y1,-t2/y2,-t3/y3)是传给Softmax层的反向传播的输入。

Softmax层

Step1:前面的层(Cross Entropy Error 层)的反向传播的值传过来。

Step2:“×”节点将正向传播的值翻转后相乘

Step3:正向传播时若有分支流出,则反向传播时它们的反向传播的值会相加。

Step4:“+”节点原封不动地传递上游的值。

Step5:"×”节点将值翻转后相乘。

Step6:向两个分支的输入和乘以exp(a1) 后的值就是我们要求的反向传播。

 

 

4、总结

Softmax-with-Loss层的计算图

 

 

SoftmaxWithLoss算法使用方法

1、 caffe源码—softmaxWithLoss

caffe::SoftmaxWithLossLayer< Dtype > Class Template Reference

net.loss = caffe.layers.SoftmaxWithLoss(net.fc3, net.label)
输出:
layer {
  name: "loss"
  type: "SoftmaxWithLoss"
  bottom: "fc3"
  bottom: "label"
  top: "loss"
}

 

 

SoftmaxWithLoss算法应用案例

DL之DNN:自定义2层神经网络TwoLayerNet模型(封装为层级结构)利用MNIST数据集进行训练、GC对比
DL之DNN:自定义2层神经网络TwoLayerNet模型(封装为层级结构)利用MNIST数据集进行训练、预测
DL之DNN:DNN优化技术之利用MultiLayerNetExtend算法(BN层使用/不使用+权重初始值不同)对Mnist数据集训练评估学习过程
DL之DNN:利用MultiLayerNet模型【6*100+ReLU+SGD】对Mnist数据集训练来理解过拟合现象
DL之DNN:利用MultiLayerNet模型【6*100+ReLU+SGD,weight_decay】对Mnist数据集训练来抑制过拟合
DL之DNN:利用MultiLayerNetExtend模型【6*100+ReLU+SGD,dropout】对Mnist数据集训练来抑制过拟合
DL之DNN:自定义MultiLayerNet【6*100+ReLU,SGD】对MNIST数据集训练进而比较【多个超参数组合最优化】性能
DL之CNN:自定义SimpleConvNet【3层,im2col优化】利用mnist数据集实现手写数字识别多分类训练来评估模型
DL之CNN可视化:利用SimpleConvNet算法【3层,im2col优化】基于mnist数据集训练并对卷积层输出进行可视化
DL之CNN:利用自定义DeepConvNet【7+1】算法对mnist数据集训练实现手写数字识别、模型评估(99.4%)

 

参考文章
Caffe源码 - SoftmaxWithLossLayer