NJU1healer的个人博客分享 http://blog.sciencenet.cn/u/NJU1healer

博文

log_softmax、softmax和的nll_loss、nn.CrossEntropy区别(Pytorch学习笔记)

已有 4649 次阅读 2020-10-22 15:27 |个人分类:Pytorch|系统分类:科研笔记

log_softmax能够解决函数overflow和underflow,加快运算速度,提高数据稳定性。

       使用log_softmax。 一方面是为了解决溢出的问题,第二个是方便CrossEntropyLoss的计算。不需要担心值域的变化。

preview

      如上图,因为softmax会进行指数操作,当上一层的输出,也就是softmax的输入比较大的时候,可能就会产生overflow。比如上图中,z1、z2、z3取值很大的时候,超出了float能表示的范围。  同理当输入为负数且绝对值也很大的时候,会分子、分母会变得极小,有可能四舍五入为0,导致下溢出。  尽管在数学表示式上是对softmax在取对数的情况。但是在实操中是通过:

image.png

image.png

具体来说,需要进一步理清思路,那么建议看下面博客

(三)PyTorch学习笔记——softmax和log_softmax的区别、CrossEntropyLoss() 与 NLLLoss() 的区别、log似然代价函数

感谢作者分享!

image.png

另外:Pytorch相关学习笔记,见链接

https://blog.csdn.net/hao5335156/category_7716910.html

【参考】

https://www.zhihu.com/question/358069078

点滴分享,福泽你我!Add oil!



https://blog.sciencenet.cn/blog-3428464-1255349.html

上一篇:Matlab中计算函数运行时间的三种方法及判断新建文件夹
下一篇:PyTorch的Tensor详解创建以及nn.ReLU与F.ReLU的区别

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2022-5-20 23:09

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部