pytorch,深度学习流行的框架之一,Facebook开发维护,社区活跃度高。
1.pytorch维度转化相关
1.1 permute vs transpose
词义是重新排列,改变次序的意思,在pytorch中主要用来实现tensor的维度转换。
pytorch官方的解释如下:
1 | $ permute(*dims) → Tensor |
Example 1
2
3
4
51, 2, 3, 5) x = torch.randn(
x.size()
torch.Size([1, 2, 3, 5])
3, 2, 0, 1).size() x.permute(
torch.Size([5, 3, 1, 2])
torch.transpose(Tensor, a,b):transpose只能操作2D矩阵的转置, 但是多次的2D转换的结果和permute的一致。 1
2
3
4
5
61,2,3,5).transpose(2,0).shape torch.randn(
torch.Size([3, 2, 1, 5])
1,2,3,5).transpose(2,0).transpose(3,0) torch.randn(
torch.Size([5, 2, 1, 3])
1,2,3,5).transpose(2,0).transpose(3,0).transpose(3,1) torch.randn(
torch.Size([5, 3, 1, 2])
1.2 view
改变tensor的形状,但是和permute和transpose不同; 参数中的-1就代表这个位置由其他位置的数字来推断;
pytorch的官方解释如下: Returns a new tensor with the same data as the self tensor but of a different shape.
1 | $ view(*shape) → Tensor |
1 | 4, 4) x = torch.randn( |