pytorch中torch.transpose()与torch.tensor.permute()的区别

相同点:交换张量的维度
不同点:

  • 参数列表: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]]])

猜你喜欢

转载自blog.csdn.net/RealCoder/article/details/105868237