我在尝试用Node.js实现神经网络的过程中发现计算值出现了Infinity,经过检查发现在计算以下这个几乎线性增长的函数时,
function softmax(x0){
return Math.log(Math.exp(x0)+1);
}
如果输入的值超过大约700就会输出Inf,这应该是因为Math.exp(x0)超过了浮点数的上界。
我并不很擅长写 Python,因为Python不太符合我的代码习惯。请问为了防止出现溢出,是否有比换成Python更好的办法?
我在尝试用Node.js实现神经网络的过程中发现计算值出现了Infinity,经过检查发现在计算以下这个几乎线性增长的函数时,
function softmax(x0){
return Math.log(Math.exp(x0)+1);
}
如果输入的值超过大约700就会输出Inf,这应该是因为Math.exp(x0)超过了浮点数的上界。
我并不很擅长写 Python,因为Python不太符合我的代码习惯。请问为了防止出现溢出,是否有比换成Python更好的办法?
13 回答12.8k 阅读
7 回答2k 阅读
3 回答2.6k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答928 阅读✓ 已解决
6 回答1.1k 阅读
注意到在x0较大时f(x0)和x0差距可忽略,直接输出x0即可。