3 python floating-point numpy python-2.7
我正在尝试在 Python 中创建一个 sigmoid 函数,但是,我收到以下错误:
RuntimeWarning: overflow encountered in exp
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
def sigmoid(self, value):
a = np.exp(-value)
return 1.0/ (1.0 + a)
Run Code Online (Sandbox Code Playgroud)
我搜索了以前的答案,但他们没有解决我的问题。问题在于计算 a 的值。我也尝试使用:
a = np.float128(np.exp(-value))
但我遇到了同样的错误,并使用:
a = np.float256(np.exp(-value))
我收到以下错误:
AttributeError: 'module' object has no attribute 'float256'
Run Code Online (Sandbox Code Playgroud)
我想如果我有溢出我可以返回 0,如果我有下溢我可以返回 1
警告不是错误。你可以忽略它。
也就是说,当 的结果exp(-value)超过value的浮点数据类型格式可表示的最大数量时,就会发生这种情况。
您可以通过检查是否value太小来防止溢出:
def sigmoid(value):
if -value > np.log(np.finfo(type(value)).max):
return 0.0
a = np.exp(-value)
return 1.0/ (1.0 + a)
Run Code Online (Sandbox Code Playgroud)