爱因斯坦求和约定:同一项中重复出现的指标默认对该指标取值范围求和。一句话替代成片的 符号,是张量运算与 einsum 的语义基础。

哑标 vs 自由指标

类别出现次数含义是否求和
哑标同项中 2 次求和指标,可任意换字母
自由指标同项中 1 次决定结果维度,等式两侧需一致

三个常用例子

向量点积 简记为 是哑标,结果是标量。

矩阵乘法 简记为 哑标, 自由指标。

张量收缩 中, 哑标先求和得 自由指标保留,结果为

两条避坑规则

  • 同一指标在一项中至多出现 2 次。 非法,求和路径有歧义。
  • 等式两侧自由指标集合必须一致。 非法,维度不匹配。

与 einsum 的对应

NumPy/PyTorch 的 einsum 是该约定的代码化表达,字符串左边写输入指标,右边写输出指标:

np.einsum('i,i->', a, b)        # 点积
np.einsum('ij,jk->ik', A, B)    # 矩阵乘
np.einsum('bij,bjk->bik', X, Y) # 批量矩阵乘
np.einsum('ij->ji', A)          # 转置

记一条核心规则即可:重复指标缩并,单次指标保留