1. 程式人生 > 程式設計 >pytorch檢視通道數 維數 尺寸大小方式

pytorch檢視通道數 維數 尺寸大小方式

檢視tensor

x.shape # 尺寸
x.size() # 形狀
x.ndim # 維數

例如

import torch
parser = argparse.ArgumentParser(description='PyTorch')
parser.add_argument('--img_w',default=144,type=int,metavar='imgw',help='img width')
parser.add_argument('--img_h',default=288,metavar='imgh',help='img height')
parser.add_argument('--batch-size',default=32,metavar='B',help='training batch size')
parser.add_argument('--test-batch',default=64,metavar='tb',help='testing batch size')
 
class net(nn.Module):
 def __init__(self,arch='resnet18'):
 super(net,self).__init__()
 model_ft = models.resnet50(pretrained=True)
 self.visible = model_ft
 
 def forward(self,x):
 print(x.shape)
 print(x.size())
 print(x.ndim)
 
 input = self.visible.conv1(x)
 
 print(input.shape)
 print(input.size())
 print(input.ndim)

pytorch檢視通道數 維數 尺寸大小方式

從左至右起,32表示訓練集batch_size大小,3是影象通道數,288是影象高度,144是影象寬度,影象尺寸 288*144,維度個數是4。很多部落格在介紹論文時候,沒有準確表達這些引數名稱,往往出現張冠李戴,導致讀者後續使用過程中被老師ma

經過標準resnet50第一層卷積後,結果是:32表示訓練集batch_size大小,64是影象通道數,72是影象高度,36是影象寬度,影象尺寸72*36,維數是4

補充知識:pytorch中與維度/變換相關的幾個函式

torch.size ()

先說torch.size()函式,因為後面的方法都會用這個方法看到變換後的矩陣的維度

通過該方法,可以檢視當前Tensor的維度,用法也很簡單:

>>>import torch
>>>a = torch.Tensor([[[1,2,3],[4,5,6]]])
>>>a.size()
torch.Size([1,3])

torch.view()

官方文件中的解釋:

pytorch檢視通道數 維數 尺寸大小方式

簡單說,把原本的tensor尺寸,轉變為你想要的尺寸,例如原尺寸為23,現在可以轉為32或16等,但一定要保證等式成立,不能目標尺寸為33

此外,也可以設其中一個尺寸為-1,表示機器內部自己計算,但同時只能有一個為-1,用法如下:

>>> b=a.view(-1,3,2)
>>> b
tensor([[[1.,2.],[3.,4.],[5.,6.]]])
>>> b.size()
torch.Size([1,2])

torch.squeeze() / torch.unsqueeze()

torch.squeeze(n)函式表示壓縮tensor中第n維為1的維數,比如下面第一個,b.squeeze(2).size(),原始的b為上面的torch.Size([1,2]),第二維是2≠1,所以不壓縮,尺寸保持不變;而若b.squeeze(0).size(),則發現第一維為1,因此壓縮為3x2的tensor

>>> b.squeeze(2).size()
torch.Size([1,2])
>>> b.squeeze(0).size()
torch.Size([3,2])

相反的,torch.unsqueeze(n)則是在第n維增加一個維數=1,如下,表示在原始的b的第二維增加一維,則尺寸變為1 * 3 * 1 * 2

>>> b.unsqueeze(2).size()
torch.Size([1,1,2])
>>> b.unsqueeze(2)
tensor([[[[1.,2.]],[[3.,4.]],[[5.,6.]]]])

torch.permute()

這個函式表示,將原始的tensor,按照自己期望的位置重新排序,例如原始tensor的第0、1、2維分別是1、3、2,那麼當我執行permute(2,1),則將第三維放在最前,第一維放在中間,第二維放在最後,也就變成了2 * 1 * 3,注意這裡表示的維數的index,而不是具體幾維:

>>> b.permute(2,1).size()
torch.Size([2,3])
>>> b.permute(2,1)
tensor([[[1.,3.,5.]],[[2.,4.,6.]]])

暫時只想到這些,若有錯誤還請指正,或有其他相關函式,我也將持續更新。

以上這篇pytorch檢視通道數 維數 尺寸大小方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。