我正在使用 numpy 执行矩阵乘法,但我不知道如何利用 numpy 进行 3d 矩阵乘法。
假设我有一个 3x3 矩阵 a,我将它乘以 3x1 向量 b。这将给出一个 3x1 向量 c。
这是在 numpy 中完成的:
# (3, 3) * (3, 1) -> (3, 1)
c = np.matmul(a, b)
Run Code Online (Sandbox Code Playgroud)
好的,现在我想对 3d 矩阵执行类似的操作,该矩阵本质上是 2500 个 3x3 矩阵。现在我正在做一些事情,其效果是:
# (2500, 3, 3) * (2500, 3, 1) -> list of (3, 1) vectors with length 2500
C = [np.matmul(a, b) for a, b in zip(A, B)]
Run Code Online (Sandbox Code Playgroud)
它返回 (3, 1) 向量的列表。
我宁愿不循环,而是充分利用 numpy 的矢量化和矩阵/张量产品。有什么手术可以做吗...
# (2500, 3, 3) * (2500, …Run Code Online (Sandbox Code Playgroud)