DL之SoftmaxWithLoss:SoftmaxWithLoss算法(Softmax+交叉熵误差)简介、使用方法、应用案例之详细攻略
DL之SoftmaxWithLoss:SoftmaxWithLoss算法(Softmax函数+交叉熵误差)简介、使用方法、应用案例之详细攻略
目录
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(因为dL/dL=1)。
- “ ×” 节点的反向传播将正向传播时的输入值翻转,乘以上游传过来的导数后,再传给下游。
- “ +” 节点将上游传来的导数原封不动地传给下游。
- “ 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
相关文章
- 爬虫案例分析_爬虫爬取司法案例
- commons-lang里面StringUtils方法说明以及案例
- Flume+Kafka整合案例实现
- 获取实时反诈最新动态/案例
- 随机数Random类(使用方法以及案例)
- 【02】Camunda系列-扩展案例-用户任务、网关、决策自动化
- {Python}关于类属性、类方法和静态方法的综合案例
- 基于现代R语言【Tidyverse、Tidymodel】的机器学习方法与案例分析
- JavaScript案例:循环精灵图和显示隐藏文本框内容
- 业务用例元模型-软件方法(下)第9章分析类图案例篇Part08
- 组织结构的建模-软件方法(下)第9章分析类图案例篇Part06-案例二-智能建模工具
- 维表拉链表案例_维善优案例
- C#中泛型类和扩展方法如何使用案例分享
- unity3d 对接 workerman 实现联机游戏功能案例分享
- java测试案例编写方法_java实现自动化测试实例
- html制作网页案例代码 大学生_完整html网页代码
- 热文回顾|【案例】国内首个微型挖掘机产线AGV柔性物流系统的规划与应用
- 大数据必学Java基础(八十八):通过案例和概念体会反射的好处
- HTML入门案例Demo【猫咪相册】
- 专有云TCE解决方案入选优秀案例,腾讯云IPv6再获权威认可
- MySQL语句AS:使用方法及案例(mysql语句as)
- dockerfile生产案例- 基于ubuntu基础镜像制作nginx镜像
- MySQL分片在实际案例中的运用(mysql中分片案例)
- Redis问题解决一个案例研究(redis问题案例)
- .NET中的异步编程-EAP/APM使用方法及案例介绍