5

我需要计算exp(x**2)where x = numpy.arange(30,90)。这引发了警告:

RuntimeWarning: overflow encountered in exp
inf

我不能安全地忽略这个警告,但 SymPy 和 mpmath 都不是解决方案,我需要执行数组操作,所以 Numpy 解决方案将是我的梦想。

有谁知道如何处理这个问题?

4

2 回答 2

3

您可以使用具有必要范围的数据类型,例如decimal.Decimal

>>> import numpy as np
>>> from decimal import Decimal
>>> x = np.arange(Decimal(30), Decimal(90))
>>> y = np.exp(x ** 2)
>>> y[-1]
Decimal('1.113246031563799750400684712E+3440')

但是你用这些数字做什么?你能避免取幂并使用对数吗?有关您的问题的更多详细信息会有所帮助。

于 2014-07-08T18:14:35.770 回答
3

我认为您可以使用此方法来解决此问题:

归一化

我克服了这种方法的问题。在使用这种方法之前,我的分类准确率为:86%。使用此方法后,我的分类准确率为:96%!!!这很棒!
第一个:
Min-Max 缩放
第二个:
Z-score 标准化

这些是实现的常用方法normalization
我使用第一种方法。我改变它。最大数除以 10。所以结果的最大数是 10。那么 exp(-10) 将不是overflow
希望我的回答对你有帮助!(^_^)

于 2015-12-19T09:13:45.277 回答