首页 > 解决方案 > python中非常大的浮点数

问题描述

我正在尝试为 Mnist 数据库构建一个神经网络。在计算 softmax 函数时,我收到与“您无法存储该大小的浮点数”相同的错误

代码如下:

def softmax(vector): # REQUIRES a unidimensional numpy array 
adjustedVals = [0] * len(vector)
totalExp = np.exp(vector)
print("totalExp equals")
print(totalExp)
totalSum = totalExp.sum()
for i in range(len(vector)):
    adjustedVals[i] = (np.exp(vector[i])) / totalSum
return adjustedVals # this throws back an error sometimes?!?!

经检查,大多推荐使用十进制模块。但是,当我弄乱了该模块在命令行中使用的值时,即:

from decimal import Decimal
import math
test = Decimal(math.exp(720))

对于 math.exp(>709) 的任何值,我都会收到类似的错误。

OverflowError: (34, 'Numerical result out of range')

我的结论是即使十进制也无法处理这个数字。有谁知道我可以用来表示这些非常大的浮点数的另一种方法。

标签: python-3.xmachine-learningneural-networkfloating-pointdecimal

解决方案


如果值高于 709,则函数“math.exp”超出浮点范围并引发此溢出错误。

如果math.exp您使用numpy.exp如此大的指数而不是 ,您将看到它的计算结果为特殊值inf(无穷大)。

除了这一切,我想知道你为什么要产生这么大的数字(不知道你知道它有多大。只是给你一个想法,宇宙中的原子数估计在 10 范围内到 80 次方。您尝试生成的数字远大于此)。


推荐阅读