如何修复:运行时警告:exp 中遇到溢出


您在 Python 中可能遇到的警告是:

 RuntimeWarning: overflow encountered in exp

当您使用exp NumPy 函数,但使用的值太大而无法处理时,会出现此警告。

需要注意的是,这只是一个警告,NumPy 仍然会执行您请求的计算,但它默认提供警告。

当您遇到此警告时,您有两种选择:

1.忽略它。

2.彻底删除警告。

以下示例展示了如何在实践中响应此警告。

如何重现警告

假设我们在Python中执行以下计算:

 import numpy as np

#perform some calculation
print (1/(1+np. exp (1140)))

0.0

/srv/conda/envs/notebook/lib/python3.7/site-packages/ipykernel_launcher.py:3:
RuntimeWarning: overflow encountered in exp

请注意,NumPy 进行了计算(结果为 0.0),但它仍然打印RuntimeWarning

打印此警告是因为值 np.exp(1140) 代表 e 1140 ,这是一个很大的数字。

我们基本上要求 NumPy 执行以下计算:

  • 1 / (1 + 大数)

这可以简化为:

  • 1 / 大量

它确实是 0,这就是为什么 NumPy 计算结果为0.0

如何去除警告

如果需要,我们可以使用warns包来抑制警告,如下所示:

 import numpy as np
import warnings

#remove warnings
warnings. filterwarnings (' ignore ')

#perform some calculation
print (1/(1+np. exp (1140)))

0.0

请注意,NumPy 执行计算并且不显示运行时警告。

注意:一般来说,警告有助于识别需要很长时间执行的代码片段。因此,在决定删除警告时要非常有选择性。

其他资源

以下教程解释了如何修复 Python 中的其他常见错误:

如何修复 Pandas 中的 KeyError
如何修复:ValueError:无法将 float NaN 转换为 int
如何修复:ValueError:操作数无法与形状一起广播

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注