爱因斯坦求和约定:同一项中重复出现的指标默认对该指标取值范围求和。一句话替代成片的 符号,是张量运算与
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) # 转置记一条核心规则即可:重复指标缩并,单次指标保留。