gpt4 book ai didi

python - 使用 numpy.einsum 转置时间矩阵 : x^T * x

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:12 24 4
gpt4 key购买 nike

对于二维矩阵 X(形状 (m,n)),我正在尝试计算 X.T * X 其中 * 是矩阵乘法。 Following the explanation on this post我希望能够使用 np.einsum('ji,ik->jk', X, X) 在 LHS 上编写 ji 首先采用转置第一个 X 参数,然后将其乘以第二个 X 参数。

这不适用于错误(对于 (m,n) = (3,4)):

ValueError: operands could not be broadcast together with remapped shapes [original->remapped]: (4,3)->(4,newaxis,3) (4,3)->(3,4)

但这有效:np.einsum('ij,jk->ik', X.T, X)。我在这里错过了什么?为什么它还要在中间添加一个轴?

最佳答案

使用 X.T * X(* 是矩阵乘法),您将第一个 X 的转置 的第二个轴相对于第二个 的第一个轴进行求和归约X。现在,第一个 X 的转置 的第二个轴将与第一个 X 的第一个轴相同。因此,我们只是简单地对这两个 X 的第一个轴进行求和归约,而它们的其余轴保持不变。

要在 einsum 上复制它,请保持字符串符号中的第一个字符相同,而两个输入的第二个轴的字符不同,就像这样 -

np.einsum('ji,jk->ik', X, X)

因此,j's 被求和减少,而其余轴 - ik 保留在输出中。

同样,这会比原生矩阵乘法慢:X.T.dot(X)。但是,我猜这篇文章更多的是作为 einsum 的学习文章。

关于python - 使用 numpy.einsum 转置时间矩阵 : x^T * x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46367441/

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