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
运行结果:
版权声明:本文为weixin_45742812原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。