import torch
import torch.nn as nn
x = torch.randn(1, 2, 3, 4)
print(x.size())
print(x.permute(2, 1, 0, 3).size())
随机生成一个1X2X3X4的四维向量,permute函数的参数表示的是转置后的向量位置。比如原向量中(1, 2, 3, 4),1的下标是0,2的下标是1,3的下标是2,4的下标是3;在x.permute(2, 1, 0, 3)中,2代表原来下表为2的数字3放在第一位(也就是N),1代表原来下表为1的数字2放在第二位(也就是C),0代表原来下表为0的数字1放在第三位(也就是H),3代表原来下表为3的数字4放在第四位(也就是W)。这样产生的结果如下:
torch.Size([1, 2, 3, 4]) #原来的tensor
torch.Size([3, 2, 1, 4]) #转置后的tensor
x.transpose(0,2).transpose(1,3)
import torch
import torch.nn as nn
import numpy as np
y = np.array([[[1, 2, 3], [4, 5, 6]]]) # 1X2X3
y_tensor = torch.tensor(y)
y_tensor_trans = y_tensor.permute(2, 0, 1) # 3X1X2
print(y_tensor.size())
print(y_tensor_trans.size())
print(y_tensor)
print(y_tensor_trans)
print(y_tensor.view(1, 3, 2))
torch.Size([1, 2, 3])
torch.Size([3, 1, 2])
tensor([[[1, 2, 3],
[4, 5, 6]]])
tensor([[[1, 4]],
[[2, 5]],
[[3, 6]]])
tensor([[[1, 2],
[3, 4],
[5, 6]]])
tensor([[[1, 2, 3],
[4, 5, 6]]])