我试图在Python中创建一个sigmoid函数,但是,我收到以下错误:
RuntimeWarning: overflow encountered in exp
这是我的代码:
def sigmoid(self, value):
a = np.exp(-value)
return 1.0/ (1.0 + a)
我搜索了之前的答案,但他们并没有解决我的问题。 问题在于计算a的值。 我也尝试过使用:
a = np.float128(np.exp(-value))
但我得到了同样的错误,并使用:
a = np.float256(np.exp(-value))
我收到以下错误:
AttributeError: 'module' object has no attribute 'float256'
我认为如果我有溢出,我可以返回0,如果我有下溢,我可以返回1
答案 0 :(得分:3)
警告不是错误。你可以忽略它。
也就是说,当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)