相同点:交换张量的维度
不同点:
- 参数列表:
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]]])
本文对比分析了PyTorch库中用于张量维度交换的两种方法:transpose和permute。详细阐述了它们的相同点和不同点,包括参数列表、内存共享特性以及灵活性上的区别。
3176

被折叠的 条评论
为什么被折叠?



