相同点:交换张量的维度
不同点:
- 参数列表:
torch.transpose(dim1,dim2)
只能传入两个参数,tensor在这两个维度之间交换 - 参数列表:
torch.tensor.permute(dims)
要求传入所有维度,tensor按维度排列顺序进行交换 - 内存:
torch.transpose(dim1,dim2)
得到的张量与原张量共享内存,而torch.tensor.permute(dims)
不具备这个性质
总结:permute相比transpose更加灵活,transpose具有共享内存机制。
a=torch.tensor([[[1,2,3],[4,5,6]]])
b=torch.tensor([[[1,2,3],[4,5,6]]])
c=a.transpose(2,1)
c=c.transpose(2,1)
d=b.permute(0,2,1)
d=d.permute(0,1,2)
print(c)
print(a)
print(d)
print(b)
#输出结果为:
tensor([[[1, 2, 3],[4, 5, 6]]])
tensor([[[1, 2, 3],[4, 5, 6]]])
tensor([[[1, 4],[2, 5],[3, 6]]])
tensor([[[1, 2, 3],[4, 5, 6]]])