gpt4 book ai didi

python - 是否存在矩阵乘法的数值最优顺序?

转载 作者:太空狗 更新时间:2023-10-29 21:02:05 25 4
gpt4 key购买 nike

TL;DR:问题是关于乘法准确性

我必须将矩阵A (100x8000)、B (8000x27) 和C (27x1) 相乘。

由于矩阵 BC 是常量而 A 是变量,我更喜欢将其计算为:ABC = np.点(A,np.dot(B,C))。但是我想知道,它可能比 np.dot(np.dot(a, B), C)numerically 更差(在 accuracy 方面).

可能重要的是:矩阵 AB 包含(分别)100 和 27 个相关特征的 8000 个样本。

是否存在数值最优(就准确性而言)的乘法顺序?如果是 - 我该如何确定?

特例

可以假设AB 矩阵都是非负的。此外:

C = np.linalg.solve(cov(B, k), X)

其中 X 是一个 27x1 矩阵,包含 27 个(可能相关的)未知分布的随机变量,cov = lambda X, k: np.dot(X.T, X) + k * np .eye(X.shape[1])k 是最小化表达式的非负常数:

sum((X[i, 0] - np.dot(np.dot(B[:, [i]].T, drop(B, i)),
np.linalg.solve(cov(drop(B, i), k),
np.delete(X, i, axis=0))) **2
for i in range(27))

drop() 函数定义为 lambda X, i: np.delete(X, i, axis=1)

更特殊的情况

可以假设np.cov(B.T, B)X的协方差矩阵,服从多元高斯分布。

最佳答案

目前我最好的想法(对于一组特定的矩阵)是执行以下数值实验:

  1. 将引用矩阵计算为以高精度计算的乘积的平均值(例如 `np.float128)。
  2. 计算精度较低的测试产品(np.float64np.float32,甚至是np.float16),
  3. 分析计算为测试产品和引用矩阵之间差异的误差。随着精度的提高,误差预计会下降。

关于python - 是否存在矩阵乘法的数值最优顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56934040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com