如何防止softmax函数overflow和underflow?

文章讨论了在C语言中进行大数值计算时可能出现的上溢出和下溢出问题。当c值极大时,计算e^c可能会导致上溢出,而c趋于负无穷时,分母极小可能导致下溢出。为了解决这些问题,可以采用最大值策略,将函数f(x)_i的值改为其减去所有x_i中的最大值M,这种方法能保持数值稳定且理论上计算结果不变。许多数值计算库已采纳此方法来确保计算精度。
  • 上溢出:c极其大的时候,计算ece^cec
  • 下溢出:当c趋于负无穷的时候,分母是一个极小的数,导致下溢出
    请添加图片描述
  • 解决方法
    M=max⁡xi,i=1,2,⋯ ,nM=\max{x_i}, i=1,2,\cdots,nM=
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值