【问题标题】:dot product of vectors in multidimentional matrices (python, numpy)多维矩阵中向量的点积(python,numpy)
【发布时间】:2016-12-10 11:39:57
【问题描述】:

我有两个矩阵 A、B、NxKxD 维度,我想得到矩阵 C、NxKxDxD 维度,其中 C[n, k] = A[n, k] x B[n, k].T(这里是“x " 表示维度 Dx1 和 1xD 矩阵的乘积,因此结果必须是 DxD 维度),所以现在我的代码看起来像这样(这里 A = B = X):

def square(X):
    out = np.zeros((N, K, D, D))
    for n in range(N):
        for k in range(K):
            out[n, k] = np.dot(X[n, k, :, np.newaxis], X[n, k, np.newaxis, :])
    return out

由于 python 的 for 循环,大 N 和 K 可能会很慢。有没有办法在一个 numpy 函数中进行这种乘法?

【问题讨论】:

    标签: python numpy matrix vector dot-product


    【解决方案1】:

    您似乎没有使用np.dot 进行求和,而只是用于导致广播的扩展。因此,您可以使用 np.newaxis/None 简单地将数组扩展为多维,并让隐式广播提供帮助。

    因此,实现将是 -

    X[...,None]*X[...,None,:]
    

    更多关于广播具体如何添加新轴的信息可以在this other post找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-09
      • 2021-12-22
      • 2015-03-31
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多