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)
從左至右起,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()
官方文件中的解釋:
簡單說,把原本的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檢視通道數 維數 尺寸大小方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。