sumofsquares中的微小数值差异取决于所使用的numpy过程调用

2024-04-16 23:58:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个计算误差平方和的函数。xy是长度相同的向量;y是观测数据,x是我的模型计算的数据。你知道吗

代码如下:

>> res = y.ravel() - x.ravel()
>> np.dot(res.T, res)
>> 1026.7059479504269

>> np.sum(res**2)
>> 1026.7059479504273

现在看最后两个数字。有人能告诉我是什么原因吗?两个调用应产生相同的操作。有人知道这种差异从何而来吗?你知道吗


Tags: 数据函数代码模型np原因res数字
1条回答
网友
1楼 · 发布于 2024-04-16 23:58:23

浮点加法是不相关的,执行运算的顺序会影响结果。大概np.dot(res, res)np.sum(res**2)以不同的顺序执行操作。你知道吗

下面是一个np.sum(x**2) != np.sum(x[:50]**2) + np.sum(x[50:]**2)(两者都不等于np.dot(x, x))的例子:

>>> np.random.seed(1234)
>>> x = np.random.randn(100)
>>> np.sum(x**2)
99.262119361371433
>>> np.sum(x[:50]**2) + np.sum(x[50:]**2)
99.262119361371461
>>> np.dot(x, x)
99.262119361371447

相关问题 更多 >