使用 Tensordot 复制矩阵-矩阵乘法

Replicating Matrix-Matrix Multiplication using Tensordot

PyKeopspackage中,没有可用的矩阵乘法公式。相反,他们实现了类似于 numpy.tensordot 的东西。我有两个大小为 m x nn x n 的矩阵 A,B。有什么方法可以使用 numpy.tensordot.

复制 A @ B
import numpy as np
m,n = 10, 20
A = np.random.random((m,n))
B = np.random.random((n,n))

result1 = A @ B
result2 = np.tensordot(A,B,(1,1))

print(result1 == result2)

# =======================
# array([[False, False, False, False, False, False, False, False, 
# ....

好的,我找到了这个问题的答案,我们可以使用提供给 tensordot 的以下参数来解决这个问题:

import numpy as np
m,n = 10, 20
A = np.random.random((m,n))
B = np.random.random((n,n))

result1 = A @ B
result2 = np.tensordot(A,B,[(1,),(0,)])

print(result1 == result2)

# =======================
# array([[True,  True,  True,  True,  True,  True,  True,  True,  True, 
# ....