Node.js实现神经网络时的浮点数溢出问题?

我在尝试用Node.js实现神经网络的过程中发现计算值出现了Infinity,经过检查发现在计算以下这个几乎线性增长的函数时,

function softmax(x0){
    return Math.log(Math.exp(x0)+1);
}

如果输入的值超过大约700就会输出Inf,这应该是因为Math.exp(x0)超过了浮点数的上界。
我并不很擅长写 Python,因为Python不太符合我的代码习惯。请问为了防止出现溢出,是否有比换成Python更好的办法?

阅读 3.1k
2 个回答

注意到在x0较大时f(x0)和x0差距可忽略,直接输出x0即可。

function softmax(x0){
    return x0>100?x0:Math.log(Math.exp(x0)+1);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题