张伟
log_softmax、softmax和的nll_loss、nn.CrossEntropy区别(Pytorch学习笔记)
2020-10-22 15:27
阅读:6863

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://wap.sciencenet.cn/blog-3428464-1255349.html?mobile=1

收藏

分享到:

当前推荐数:0
推荐到博客首页
网友评论0 条评论
确定删除指定的回复吗?
确定删除本博文吗?