Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python中的scipy/numpy中的exp中溢出?

在Python中的scipy/numpy中的exp中溢出?
EN

Stack Overflow用户
提问于 2010-12-05 16:55:48
回答 5查看 96.5K关注 0票数 26

下面的错误是什么:

代码语言:javascript
运行
AI代码解释
复制
Warning: overflow encountered in exp

在scipy/numpy中使用Python通常意味着?我正在计算一个对数形式的比率,即log(a) + log(b),然后取结果的指数,使用exp,并将sum与logsumexp一起使用,如下所示:

代码语言:javascript
运行
AI代码解释
复制
c = log(a) + log(b)
c = c - logsumexp(c)

数组B中的一些值被有意设置为0。他们的日志将是-Inf。

此警告的原因可能是什么?谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-12-05 17:25:59

在您的示例中,这意味着b在数组中的某处非常小,并且您得到的数字(a/bexp(log(a) - log(b)))对于用于存储输出的数组的任何数据类型(float32、float64等)来说都太大了。

Numpy可以配置为

  1. 忽略这些类型的错误,
  2. 打印错误,但不引发停止执行的警告(默认值)
  3. 记录错误,
  4. 引发错误
  5. 调用用户定义的函数

参见numpy.seterr以控制它如何处理浮点数组中的欠/溢出等。

票数 31
EN

Stack Overflow用户

发布于 2010-12-08 03:40:00

当你需要处理指数时,你很快就会进入下/上流,因为函数增长得太快了。一个典型的例子是统计,其中不同幅度的指数求和是很常见的。由于数量非常大/很小,所以通常会将日志保持在一个“合理”的范围内,即所谓的对数域:

代码语言:javascript
运行
AI代码解释
复制
exp(-a) + exp(-b) -> log(exp(-a) + exp(-b))

问题仍然存在,因为exp(-a)仍然会下溢。例如,exp(-1000)已经低于您可以表示为双精度数的最小数字。举个例子:

代码语言:javascript
运行
AI代码解释
复制
log(exp(-1000) + exp(-1000))

给出了对数( -inf (0 + 0)),即使您可以手动获得类似于-1000的值(-1000 + log(2))。函数logsumexp做得更好,它提取数字集的最大值,并将其从日志中取出:

代码语言:javascript
运行
AI代码解释
复制
log(exp(a) + exp(b)) = m + log(exp(a-m) + exp(b-m))

它不能完全避免下溢(例如,如果a和b非常不同),但它避免了最终结果中的大多数精度问题。

票数 9
EN

Stack Overflow用户

发布于 2015-12-19 09:22:22

我认为你可以使用这个方法来解决这个问题:

规格化

我用这种方法克服了这个问题。在使用此方法之前,我的分类准确率为:86%。使用此方法后,我的分类准确率为:96%!太棒了!

首先:

Min-Max scaling

第二:

Z-score standardization

这些是实现normalization的常用方法。

我使用第一种方法。然后我改变它。最大数除以10,所以结果的最大数是10,那么exp(-10)就不是overflow

希望我的回答能对你有所帮助!(^_^)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4359959

复制
相关文章
python 中的scipy模块
https://docs.scipy.org/doc/scipy-0.18.0/reference/ (参考链接) Python 中常用的统计工具有 Numpy, Pandas, PyMC, Sta
润森
2019/08/29
2.2K0
python 中的scipy模块
python中的scipy模块
scipy包含致力于科学计算中常见问题的各个工具箱。它的不同子模块相应于不同的应用。像插值,积分,优化,图像处理,统计,特殊函数等等。
狼啸风云
2019/08/31
5.6K0
Python中的numpy模块
列表类占用的内存数倍于数据本身占用的内存,Python自带的列表类会储存每一个元素的数据信息,数据类型信息,数据大小信息等。这是因为Python语言是一种可以随时改变变量类型的动态类型语言,而C语言和Fortran语言是静态类型语言,静态类型语言一般会在建立变量前先定义变量,并且不可以修改变量的变量类型。总的来说,numpy模块有以下两个优点:
yhni
2022/11/17
1.9K0
python中的numpy模块
对于python中的numpy模块,一般用其提供的ndarray对象。  创建一个ndarray对象很简单,只要将一个list作为参数即可。  例如:
狼啸风云
2019/01/18
5.2K0
python中NumPy的矢量运算
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
多凡
2019/11/01
9940
【Python】numpy中的arg运算
np.random.seed(100)    # 多次运行得到相同的结果,设置随机数的种子
用户7886150
2021/01/02
8500
Python中的numpy.ones()
Python numpy.ones() function returns a new array of given shape and data type, where the element’s value is set to 1. This function is very similar to numpy zeros() function.
用户7886150
2021/01/06
1.7K0
(四)Python: NumPy中的ndarry
ndarray的创建可以使用多种创建函数,如下所示,只展示几种常见的创建方法,代码如下所示:
小点点
2022/12/12
3820
python中numpy是什么意思_python中numpy是什么
numpy.argmin表示最小值在数组中所在的位置 a = [[1, 4, 2], [3, 4, 5]] b = np.argmin(a) 结果:0 a = [[4, 4, 2], [3, 4, 5]] b = np.argmin(a) 结果:2 #若有重复只显示第一个最小值的位置 a = [[0, 0, 2], [3, 4, 5]] b = np.argmin(a) 结果
用户7886150
2021/01/05
3.3K0
numpy中的broadcasting
然后,broadcast执行的时候,如果两个array的shape不一样,会先给“短”的那一个,增加高维度“扩展”(broadcasting),比如,一个2维的array,可以是一个3维size为1的3维array。
狼啸风云
2019/12/10
8410
Python中NumPy库的相关操作
NumPy(Numerical Python)是Python中常用的数值计算库,它提供了高性能的多维数组对象和对数组进行操作的函数。
周小末天天开心
2023/10/16
2620
【numpy】新版本中numpy(numpy>1.17.0)中的random模块
numpy是Python中经常要使用的一个库,而其中的random模块经常用来生成一些数组,本文接下来将介绍numpy中random模块的一些使用方法。
西西嘛呦
2020/08/26
1.7K0
【numpy】新版本中numpy(numpy>1.17.0)中的random模块
Python中的Numpy基础20问
因为numpy是一个python库,所以使用python包管理工具pip或者conda都可以安装。
程序员小猿
2021/01/19
5.7K0
Python中的Numpy基础20问
Python中numpy数组的拼接、合并
np.append() np.concatenate() np.stack() np.hstack() np.vstack() np.dstack() 其中最泛用的是第一个和第二个。第一个可读性好,比较灵活,但是占内存大。第二个则没有内存占用大的问题。
全栈程序员站长
2022/07/02
3.5K0
【Python】numpy 中的 copy 问题详解
该文章讲解了numpy中关于copy的三种情况:完全不复制、视图(view)或者叫浅复制(shadow copy)和深复制(deep copy)。描述了a = np.arange(4)和b = a[:]这两种视图操作,以及a.copy()实现深复制的过程。视图操作会返回一个新的对象,但原始数据不会发生改变;深复制则会创建一个新的对象,并复制原始对象的所有内容。
Alan Lee
2018/01/02
1.2K0
Numpy 中的 Ndarray
将实际数据与元数据分开存放,一方面提高了内存空间的使用效率,另一方面减少对实际数据的访问频率,提高性能。
杨丝儿
2022/02/18
1.1K0
Numpy 中的 Ndarray
JVM 中的内存溢出
内存溢出,通俗一点,就是 JVM 内存不足了,没有空闲内存,并且垃圾收集器也无法提供更多内存。
用户3596197
2019/01/28
1.5K0
Python中的Numpy入门教程
很简单,Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数。如果接触过matlab、scilab,那么numpy很好入手。 在以下的代码示例中,总是先导入了numpy:
hankleo
2020/09/16
3630
Python中的numpy常用函数整理
np.arange(begin,end,step):生成一个从begin到end-step的步长为step的一维数组,其中begin(默认0),step(默认1)可省略
用户7886150
2021/01/07
3K0
点击加载更多

相似问题

RuntimeWarning: exp /Scipy中遇到的溢出

10

使用python scipy.optimize.basinhopping在exp中溢出

11

numpy.exp()中的溢出

34

使用numpy处理exp中的溢出

64

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

56
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档