以下错误是什么意思:
Warning: overflow encountered in exp
在 scipy/numpy 中使用 Python 一般是什么意思?我正在计算对数形式的比率,即 log(a) + log(b),然后使用 exp 取结果的指数,并使用 logsumexp 的总和,如下所示:
c = log(a) + log(b)
c = c - logsumexp(c)
数组 b 中的某些值被有意设置为 0。它们的日志将为 -Inf。
此警告的原因可能是什么?谢谢。
最佳答案
在您的情况下,这意味着 b
在您的数组中的某个地方 very 很小,并且您得到一个数字(a/b
或 exp(log(a) - log(b))
) 对于用于存储输出的数组的任何 dtype(float32、float64 等)来说都太大了。
Numpy可以配置成
- 忽略这类错误,
- 打印错误,但不发出警告以停止执行(默认)
- 记录错误,
- 发出警告
- 引发错误
- 调用用户定义的函数
见 numpy.seterr
控制它如何处理 float 组中的下溢/溢出等。
关于python - Python中scipy/numpy中的exp溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4359959/