boardcasting(自动推广)
- 首维插入1
- 将维度为1扩展为相同维度
- 特征尺寸匹配
- 扩展为相同尺寸后相加
boardcasting可理解为:unsqueeze + expand调整维度一致
boardcasting是由需求而来,对于不同尺寸的计算,需要手动多次处理设置尺寸一致,使用boardcasting可以自动匹配尺寸且不需要额外占用内存,准确方便且高效;
boardcasting使用范围
- 从最后一维开始匹配;
- 若高维没有则先扩展1维,后匹配一致;
- 低维需要可理解使用,如维度一致或者只有1;
- 无法使用情况-input [4, 3, 32, 32]
- [2, 3, 32, 32]
- [8]
- [1, 2, 32, 32]
应用
input [4, 3, 32, 32]
- [32, 32] h,w方向整体平移
- [3, 1, 1] rgb通道调整
- [1, 1, 1, 1] 所有像素加
合并
cat
cat前提是:两特征维度一致,要拼接维度可以不一致;
stack
创造新的维度,叠加;
a = torch.rand(3, 24)
b = torch.rand(3, 24)
c = torch.stack(a, b, dim=0)
c.shape = [2, 3, 24]
拼接维度必须一致,才能创建新维度拼接;
分割
split
split([2, 2], dim=0) 和 split(1, dim=0)分别拆分对应维度的长度拆分;
长度拆分和数量拆分;
chunck
按数量拆分,chunk按数值均匀拆分!