softmax与CrossEntropyLoss(),log_softmax与 NLLLoss()

我们在处理单标签多分类问题时,若考虑用softmax来对模型最后输出作计算以得到各标签的概率分布,那之后可以通过crossentropy做一个似然估计,求得误差
但softmax求出来的概率分布中,每个标签的概率p∈(0,1),当有些标签的概率过小时就会导致下溢出(实数在计算机内用二进制表示,所以不是一个精确值,当数值过小的时候,被四舍五入为0,这就是下溢出。此时如果对这个数再做某些运算(例如除以它)就会出问题。)。
考虑softmax和crossentropy这个组合方案,crossentropy的计算是在概率分布外面套一个log 来似然,也就是做Log(Softmax(x))这个一个工作。那么直接在计算概率分布的时候加上log,把概率从(0,1)变为(-∞,0),这样就可以防止中间的计算中出现下溢出。 所以log_softmax说白了就是将本来应该由crossentropy做的套log的工作提前到预测概率分布这里来,跳过了中间的存储步骤,防止中间数值会有下溢出,使得数据更加稳定。
正是由于把log这一步从计算误差提到前面,所以用log_softmax之后就可以直接用NLLLoss来计算误差(它没有套log这一步,直接将输入取反,然后计算和label的乘积求和平均)。

在实践过程中出现了这段报错

nn.CrossentropyLoss(predictions, labe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

联邦学习小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值