栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python的numpy.exp函数中的溢出错误

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python的numpy.exp函数中的溢出错误

就像fuglede所说,这里的问题是

np.float64
无法处理最大为的数字
exp(1234.1)
。尝试
np.float128
改用:

>>> cc = np.array([[0.120,0.34,-1234.1]], dtype=np.float128)>>> ccarray([[ 0.12,  0.34, -1234.1]], dtype=float128)>>> 1 / (1 + np.exp(-cc))array([[ 0.52996405,  0.58419052,  1.0893812e-536]], dtype=float128)

但是请注意,使用扩展精度存在某些怪癖。它可能无法在Windows上运行;您实际上并没有获得完整的128位精度;当数字通过纯python时,您可能会失去精度。您可以在此处阅读有关详细信息的更多信息。

对于大多数实际目的,您可能近似

1 / (1 + <a largenumber>)
为零。也就是说,只要忽略警告并继续前进即可。Numpy会为您处理近似值(使用时
np.float64
):

>>> 1 / (1 + np.exp(-cc))/usr/local/bin/ipython3:1: RuntimeWarning: overflow encountered in exp  #!/usr/local/bin/python3.4array([[ 0.52996405,  0.58419052,  0.        ]])

如果要禁止显示警告,可以使用

scipy.special.expit
WarrenWeckesser在对该问题的评论中建议的,:

>>> from scipy.special import expit>>> expit(cc)array([[ 0.52996405,  0.58419052,  0.        ]])


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/638446.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号