1. 程式人生 > 其它 >Pytorch之permute函式:用於調換不同維度的順序,BCHW -> NCHW

Pytorch之permute函式:用於調換不同維度的順序,BCHW -> NCHW

技術標籤:PyTorch

https://zhuanlan.zhihu.com/p/76583143

MY

這是F3 dataset.py檔案裡面的內容

舉例子

這個博主講的清楚 https://blog.csdn.net/qq_30468133/article/details/85074003

permute(多維陣列,[維數的組合])

比如:

a=rand(2,3,4); %這是一個三維陣列,各維的長度分別為:2,3,4

%現在交換第一維和第二維:

permute(A,[2,1,3]) %變成3*2*4的矩陣

import torch
import numpy    as np
 
a=np.array([[[1,2,3],[4,5,6]]])
 
 
unpermuted=torch.tensor(a)  #轉化為tensor

print(unpermuted.size())  #  ——>  torch.Size([1, 2, 3])
 
tensor([[[1., 4.],
        [2., 5.],
        [3., 6.]]])
 
 
permuted=unpermuted.permute(2,0,1)

print(permuted.size())     #  ——>  torch.Size([3, 1, 2])
 
 
tensor([[[1., 2.],
         [3., 4.],
         [5., 6.]]])

torch中permute 與 numpy中transepose的區別

轉換效果一樣,只不過transpose是對np操作,permute是對tensor操作

https://blog.csdn.net/qq_34806812/article/details/89385831

import torch
import numpy as np

a = np.arange(24).reshape(3,4,2)
print('before', a)

b = np.transpose(a,(1,0,2))
print('b',b)

c = torch.tensor(a)
d = c.permute(1,0,2)
print('d:',d)

輸出

/usr/bin/python3 /home/thu/test_python/transpose_permute.py
before [[[ 0  1]
  [ 2  3]
  [ 4  5]
  [ 6  7]]
 
 [[ 8  9]
  [10 11]
  [12 13]
  [14 15]]
 
 [[16 17]
  [18 19]
  [20 21]
  [22 23]]]
b [[[ 0  1]
  [ 8  9]
  [16 17]]
 
 [[ 2  3]
  [10 11]
  [18 19]]
 
 [[ 4  5]
  [12 13]
  [20 21]]
 
 [[ 6  7]
  [14 15]
  [22 23]]]
d: tensor([[[ 0,  1],
         [ 8,  9],
         [16, 17]],
 
        [[ 2,  3],
         [10, 11],
         [18, 19]],
 
        [[ 4,  5],
         [12, 13],
         [20, 21]],
 
        [[ 6,  7],
         [14, 15],
         [22, 23]]])
 
Process finished with exit code 0