1、主要作用:变换tensor维度
example:
importtorch
x= torch.randn(2, 3, 5)print(x.size())print(x.permute(2, 0, 1).size())>>>torch.Size([2, 3, 5])>>>torch.Size([5, 2, 3])
2、介绍一下transpose与permute的异同:
同:都是对tensor维度进行转置;
异:permute函数可以对任意高维矩阵进行转置,但没有torch.permute()这个调用方式
torch.randn(2,3,4,5).permute(3,2,0,1).shape>>>torch.Size([5, 4, 2, 3])
transpose只能操作2D矩阵的转置,无法操作超过2个维度,所以要想实现多个维度的转置,既可以用一次性的
permute,也可以多次使用transpose;
torch.randn(2,3,4,5).transpose(3,0).transpose(2,1).transpose(3,2).shape>>>torch.Size([5, 4, 2, 3])
3、permute函数与contiguous、view函数的关联
contiguous: view只能作用在contiguous的variable上,如果在view之前调用了transpose、permute等,就需要调用
contiguous()来返回一个contiguous的copy;
也就是说transpose、permute等操作会让tensor变得在内存上不连续&