1.view
在pytorch中view函数的作用为重构张量的维度,相当于numpy中resize()的功能,但是用法可能不太一样。
view有二种用法:
- torch.view(参数a,参数b,。。。)
- torch.view(-1)或torch.view(参数a,-1)
如下例所示
总结一下:view的二种方法,一种就是当成resize一样转换数据shape,一种是如果是torch.view(参数a,-1),则表示在参数b未知,参数a已知的情况下自动补齐列向量长度,在这个例子中a=3,x总共由9个元素,则b=9/3=3。以此类推更多维度的比如说
🐻torch.view(a,b,c)等价于torch.view(a,b,-1),torch.view(a,b,-1)表示在已知前二个维度a,b的情况下,最后一个维度根据元素个数,自动补齐最后一维度。
2.permute
permute函数将tensor的维度换位
比如下面的
我们函数的目的,就是让这个shape的数值之间换位置。
permute()中的数字,其实就是原始shape返回的值下的每个维度的索引。
3.squeeze
对数据的维度进行压缩使用方式:
torch.squeeze(input, dim=None, out=None)
将输入张量形状中的1 去除并返回。
如果输入是形如(A×1×B×1×C×1×D),那么输出形状就为: (A×B×C×D)
当给定dim时,那么挤压操作只在给定维度上。
例如,输入形状为: (A×1×B), squeeze(input, 0) 将会保持张量不变,只有用 squeeze(input, 1),形状会变成 (A×B)。
什么是给定的维度挤压,我们可以把size()返回的值看成一个列表,列表对应不同位置的索引,就是我们要挤压的位置。比如:
torch.squeeze(m,0)就是挤压索引为0 位置,也就是2,但是我们只挤压为1的,因此保留2。这个函数结果不变
如果说不做给定位置挤压,就默认对所有的位置有1的都挤压处理
4.usqueeze
与squeeze作用相反,就是在给定位置上插入一个维度1啦
注意,扩展维度的位置