当前位置: 代码迷 >> 综合 >> pytorch中torch.transpose()与torch.tensor.permute()的区别
  详细解决方案

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

热度:57   发布时间:2023-12-11 22:47:21.0

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

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