Numpy 3D矩阵乘法(相同维度)

yws3nbqq  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(106)

我试图将两个具有相同维度的3D矩阵相乘(MxNxD)。我知道在2D矩阵乘法中,我可以转置一个,然后做矩阵乘法。是否有类似的方法用于3D矩阵?我真的不知道如何将两者相乘。我真的不明白np.einsum是如何工作的,或者我如何使用它。

mrphzbgm

mrphzbgm1#

您需要指定您希望“乘法”做什么。一种可能的方法是:

import numpy as np

M = 10
N = 20
D = 30

A = np.random.rand(M, N, D)
B = np.random.rand(M, N, D)

C = np.einsum('ijk,ijk->ij', A, B)
print(C.shape) # (10, 20)

但是你可以做更多的事情,例如:

C = np.einsum('ijk,ijk->jk', A, B)
print(C.shape) # (20, 30)

C = np.einsum('ijk,ijk->ik', A, B)
print(C.shape) # (10, 30)

或者简单的元素乘法:

C = np.einsum('ijk,ijk->ijk', A, B)
print(C.shape) # (10, 20, 30)

相关问题