在网上搜transpose的用法,出来的大多是numpy类中的用法,实际上跟torch中的tensor类的transpose方法实现方式是有区别的,
因此在看深度学习网络的代码时,碰到
.transpose(1, 2)
这种样式的代码时就不知所措了。
为此,小弟亲自一试。代码奉上:
import torch
a=torch.Tensor([[[1,2,3],[2,3,4]],[[3,4,5],[4,5,6]]])
b=a.transpose(1,2)
c=a.transpose(2,1)
print(a.shape)
print(b.shape)
print(c.shape)
print(a)
print(b)
print(c)
输出:
torch.Size([2, 2, 3])
torch.Size([2, 3, 2])
torch.Size([2, 3, 2])
tensor([[[1., 2., 3.],
[2., 3., 4.]],
[[3., 4., 5.],
[4., 5., 6.]]])
tensor([[[1., 2.],
[2., 3.],
[3., 4.]],
[[3., 4.],
[4., 5.],
[5., 6.]]])
tensor([[[1., 2.],
[2., 3.],
[3., 4.]],
[[3., 4.],
[4., 5.],
[5., 6.]]])
————————————
可以看到,
.transpose(1, 2)与.transpose(2,1)
在实现结果上是没有区别的,因此小伙伴们再碰到类似情况,可以放心的认为就是两个维度的互换啦!
版权声明:本文为qq_35692267原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。