四维张量计算原理

四维张量 sum(dim) 计算原理
示例张量 t4,shape = (2, 2, 2, 3) → 2个组 × 2个块 × 2行 × 3列
📦 原始张量结构
第 0 组 (dim=0 索引0)
第 0 块 (dim=1 索引0)
123
412
第 1 块 (dim=1 索引1)
210
132
第 1 组 (dim=0 索引1)
第 0 块 (dim=1 索引0)
321
024
第 1 块 (dim=1 索引1)
142
213
dim=0:组维度  |  dim=1:块维度  |  dim=2:行维度  |  dim=3:列维度
1. sum(dim=0):沿「组维度」求和
同一个块、同行、同列,对不同组相加
第0组 第0块
123
412
+
第1组 第0块
321
024
=
结果里的第0块
444
436
结果第 0 块
444
436
结果第 1 块
352
345
1 + 3 = 4      不同组里「同位置」的元素对应相加
✅ 结果 shape:(2, 2, 3)(消除 dim=0,剩下块、行、列)
2. sum(dim=1):沿「块维度」求和
每个组内部,把第0块和第1块按位置相加
第0组 第0块
123
412
+
第0组 第1块
210
132
=
第0组结果
333
544
第 0 组结果
333
544
第 1 组结果
463
237
1 + 2 = 3      同一组内,不同块的同位置元素相加
✅ 结果 shape:(2, 2, 3)(消除 dim=1,剩下组、行、列)
3. sum(dim=2):沿「行维度」求和
每个组、每个块内部,把上下两行按列相加
第0组 第0块
123
412
压成 1 行 3 列
535
第 0 组结果
块 0
535
块 1
342
第 1 组结果
块 0
345
块 1
355
1 + 4 = 5      同一列里,上下两行纵向相加
✅ 结果 shape:(2, 2, 3)(消除 dim=2,剩下组、块、列)
4. sum(dim=3) / sum(dim=-1):沿「列维度」求和
每一行内部,把 3 列横向相加;`dim=-1` 就是最后一维
第0组 第0块
123
412
压成 2 行 1 列
6
7
第 0 组结果
块 0
6
7
块 1
3
6
第 1 组结果
块 0
6
6
块 1
7
6
1 + 2 + 3 = 6      每一行把所有列直接加起来
✅ 结果 shape:(2, 2, 2)(消除 dim=3,剩下组、块、行)
💡 核心规律总结
1. dim 指哪一维,就沿哪一维求和,求和后这一维会被消掉,其他维度顺序不变
2. 四维张量可以先想成:组里面套块,块里面还是二维矩阵,这样看 `dim` 最直观
3. 负索引从后往前数:dim=-1 = dim=3dim=-2 = dim=2
4. 对于 shape=(2,2,2,3):
  • sum(dim=0)shape=(2,2,3)
  • sum(dim=1)shape=(2,2,3)
  • sum(dim=2)shape=(2,2,3)
  • sum(dim=3) / sum(dim=-1)shape=(2,2,2)
  • sum() 不指定 dim → 所有元素一起相加,结果是一个标量