RuntimeWarning: overflow encountered in exp
return np.exp(inX)/np.exp(inX)+1
问题描述
在使用sigma函数时候,警告RuntimeWarning: overflow encountered in exp return np.exp(inX)/np.exp(inX)+1
def sigmoid(X):
return 1.0 / (1 + np.exp(-X))
运行结果:
虽然代码可以运行,可是准确率明显低于正常值。
原因分析:
RuntimeWarning:exp 中遇到溢出
由下图可以看到e^x 当x<0时增长率非常大。所以在使用sigma函数时,当x<0函数值增长速度极大,产生了上溢。
解决方案:
当x<0时,使用以下公式:
def sigmoid(X):
if X >= 0:
return 1.0 / (1 + np.exp(-X))
else:
return np.exp(X)/np.exp(X)+1