||
log_softmax能够解决函数overflow和underflow,加快运算速度,提高数据稳定性。
使用log_softmax。 一方面是为了解决溢出的问题,第二个是方便CrossEntropyLoss的计算。不需要担心值域的变化。
如上图,因为softmax会进行指数操作,当上一层的输出,也就是softmax的输入比较大的时候,可能就会产生overflow。比如上图中,z1、z2、z3取值很大的时候,超出了float能表示的范围。 同理当输入为负数且绝对值也很大的时候,会分子、分母会变得极小,有可能四舍五入为0,导致下溢出。 尽管在数学表示式上是对softmax在取对数的情况。但是在实操中是通过:
具体来说,需要进一步理清思路,那么建议看下面博客:
(三)PyTorch学习笔记——softmax和log_softmax的区别、CrossEntropyLoss() 与 NLLLoss() 的区别、log似然代价函数
感谢作者分享!
另外:Pytorch相关学习笔记,见链接:
https://blog.csdn.net/hao5335156/category_7716910.html
【参考】
https://www.zhihu.com/question/358069078
点滴分享,福泽你我!Add oil!
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-30 13:45
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社