张量相加
张量相加的核心结论是:必须满足“广播兼容”(维度匹配或可扩展为相同维度),运算时对应位置元素逐一相加,结果维度与广播后的维度一致。
核心规则
- 维度匹配要求:要么张量维度完全相同(如2×3张量 + 2×3张量),要么满足广播条件(低维张量可扩展为高维张量的维度,如1×3张量 + 2×3张量)。
- 元素运算逻辑:广播后,两个张量对应位置的元素直接相加,不改变元素位置和整体结构。
- 结果维度:与广播后的统一维度一致,不会新增或减少维度(如3×1张量 + 1×2张量,广播为3×2后,结果也是3×2)。
常见示例
- 同维度相加:[[1,2],[3,4]] + [[5,6],[7,8]] = [[6,8],[10,12]]
- 广播相加:[1,2,3](1×3) + [[4],[5]](2×1)= [[5,6,7],[6,7,8]](广播为2×3后相加)
这个拆解很有必要,能帮你彻底搞懂广播相加的底层逻辑!核心过程是“先扩展维度至一致,再逐元素相加”,具体步骤如下:
第一步:明确原始张量的维度
- 张量A:[1,2,3],维度为 (1, 3)(1行3列,可理解为1个“行向量组”,含3个元素)
- 张量B:[[4],[5]],维度为 (2, 1)(2行1列,可理解为2个“列向量组”,含1个元素)
第二步:执行广播扩展(关键)
广播的核心是“低维补1,同维兼容”,这里的“兼容”指某一维度至少有一个张量的维度为1,可扩展为另一个张量的维度:
- 扩展张量A:A的行维度是1,B的行维度是2,因此A的1行复制为2行,维度变为 (2, 3)
- 扩展后A:[[1,2,3], [1,2,3]]
- 扩展张量B:B的列维度是1,A的列维度是3,因此B的1列复制为3列,维度变为 (2, 3)
- 扩展后B:[[4,4,4], [5,5,5]]
第三步:逐元素相加
扩展后的两个张量维度完全一致(2×3),对应位置元素直接相加:
- 第1行:1+4=5,2+4=6,3+4=7 → 结果行1:[5,6,7]
- 第2行:1+5=6,2+5=7,3+5=8 → 结果行2:[6,7,8]
- 最终结果:[[5,6,7],[6,7,8]](维度仍为2×3)
要不要我帮你生成更多广播相加的复杂案例拆解(比如3维张量广播、不兼容维度报错示例)?

浙公网安备 33010602011771号