【发布时间】:2021-09-22 18:24:58
【问题描述】:
我希望沿第一维计算两个 3D 张量之间的点积。我尝试了以下 einsum 表示法:
import numpy as np
a = np.random.randn(30).reshape(3, 5, 2)
b = np.random.randn(30).reshape(3, 2, 5)
# Expecting shape: (3, 5, 5)
np.einsum("ijk,ikj->ijj", a, b)
不幸的是它返回了这个错误:
ValueError: einstein sum subscripts string includes output subscript 'j' multiple times
在np.tensordot 失败后,我选择了 Einstein sum。非常欢迎提出想法和后续问题!
【问题讨论】:
-
沿第一个轴/维度的矩阵乘法听起来就像你只想要
a @ b,它将为a和b的三对中的每一对执行矩阵乘法(5, 2) x (2, 5)。跨度>
标签: python numpy numpy-einsum