文章目录
维度变换
view()/reshape() 改变形状
view()/reshape()等价,参数为需要目标tensor的形状
unsqueeze()增加维度
在指定位置增加一个维度,参数为增加后,被增加维度所在的位置索引
squeeze()压缩维度
只能压缩长度为1的维度,参数为压缩前,被压缩维度的索引
expand()广播
相当于广播机制,将tensor在“形式上”变成指定的维度。实际数据并没有改变。
-1表示该维度不扩展
repeat() 复制
- 将tensor 在指定维度上复制 n次,这里的参数不再是目标形状,而是次数
- repeat()会实际复制数据,即内存上多出 n倍相同的内容。
transpose() 交换指定的两个维度的位置
permute() 将维度顺序改变成指定的顺序
参数为改变后的顺序
合并和分割
cat() 将tensor在指定维度上合并
stack()将tensor堆叠,会增加新的维度
split()根据指定维度的长度拆分
c = torch.rand(4,3,28,32)
# 参数为标量,表示均匀拆分每个成员都分到长度为2
a, b = c.split(2,dim=0)
print(a.shape)
print(b.shape)
c = torch.rand(4,3,28,32)
# 参数为列表,表示每个成员指定长度
a, b = c.split([1,3],dim=0)
print(a.shape)
print(b.shape)
chunk()根据数量拆分
参数为需要拆分成的数量
c = torch.rand(4,3,28,32)
a = c.chunk(4,dim=0)
print(a[0].shape)
print(a[1].shape)
print(a[2].shape)
print(a[3].shape)