针对一个二维矩阵
X
(形状为 (m,n)
),我要计算 X.T * X
,其中 *
表示矩阵乘法。参考这篇文章的解释,我原以为可以通过 np.einsum('ji,ik->jk', X, X)
实现。在左边写上 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)
。我错过了什么?为什么它甚至还添加了一个中间轴?
A x B
中,我们希望将A
的每一行与B
的每一列相乘,对吗?所以'ji,jk->ik'
看起来像是我们正在取转置的行,并且乘以矩阵的行...是这样吗? - DilithiumMatrix