gpt4 book ai didi

python - Scipy 退出 : Unexpected behavour. NaN

转载 作者:太空狗 更新时间:2023-10-29 21:08:42 26 4
gpt4 key购买 nike

注意到一些 nan 意外出现在我的数据中。(并扩展并整理他们触及的一切)做了一些仔细的调查并产生了一个最小的工作示例:

>>> import numpy
>>> from scipy.special import expit
>>> expit(709)
1.0
>>> expit(710)
nan

Expit 是逆逻辑。 Scipy documentation here .这告诉我们:expit(x) = 1/(1+exp(-x))

所以 1+exp(-709)==1.0 这样 expit(709)=1.0 似乎相当合理,四舍五入 exp(-709)= =0
但是,expit(710) 是怎么回事?
expit(710)==nan 意味着 1+exp(-710)==0,这意味着:exp(-710)=-1 这根本不对。

这是怎么回事?

我正在修复它:

def sane_expit(x):
x = np.minimum(x,700*np.ones_like(x)) #Cap it at 700 to avoid overflow
return expit(x)

但这会有点慢,因为额外的操作和 python 开销。

我正在使用 numpy 1.8.-0 和 scipy 0.13.2

最佳答案

What is going on?

该函数显然没有编码来处理如此大的输入,并且在内部计算期间遇到溢出。

数字 710 的意义在于 math.exp(709) 可以表示为 float,而 math.exp(710) 不能:

In [27]: import math

In [28]: math.exp(709)
Out[28]: 8.218407461554972e+307

In [29]: math.exp(710)
---------------------------------------------------------------------------
OverflowError Traceback (most recent call last)
----> 1 math.exp(710)

OverflowError: math range error

可能值得filing a bug against SciPy .

关于python - Scipy 退出 : Unexpected behavour. NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22006650/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com