【发布时间】:2014-09-13 07:20:13
【问题描述】:
我的程序似乎几乎是任意地崩溃了。
我的代码包括这两行:
z[i, j] = -math.exp(oneminusbeta[j, i])
weights[i,j] = math.exp(beta[j,i] + oneminusbeta[j,i])
我之前在二维数据上运行过我的整个代码,它是7341 x 648。运行该代码我完全没有问题。
但现在我使用的数据大约是原来的十倍。这是71678 x 648,我收到了这个错误:
OverflowError: math range error
而且我没有在任何特定点上得到这个。我在每一行代码之前记录了 cmets,以便我可以查看导致崩溃的原因,并且看起来崩溃在上面提到的第二行 (weights[i,j] = math.exp(beta[j,i] + oneminusbeta[j,i])) 上发生的频率更高。
问题是,它在不同的时间崩溃。
起初,它在weights[30816, 42] 崩溃。然后在weights[55399, 43]。然后在z[33715,45]。但所有 3 种情况下的数据都是相同的。
问题可能是什么?这是与 python 的内存相关问题吗?顺便说一句,我也在使用Numba。
编辑
我忘了提一下,我已经设置了阈值,以便 exp() 函数中的内容不超过 709 或 -708,所以从技术上讲不应该有溢出。
【问题讨论】:
标签: python numpy scipy overflow exponent