天天看點

torch.nn.MaxPool2d()學習筆記

參考連結: torch.nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)

參考連結: torch.nn.functional.max_pool2d(*args, **kwargs)

參考連結: Convolution arithmetic

參考連結: 神經網絡與深度學習

參考連結: 二維轉置卷積和空洞卷積示例

torch.nn.MaxPool2d()學習筆記
torch.nn.MaxPool2d()學習筆記

總結:

輸入資料形狀是(N,C,H,W),分别是batchsize、通道數、高度和寬度.
輸出不改變batchsize和通道數,隻改變高度和寬度.
高度和寬度的計算公式如下:
           
torch.nn.MaxPool2d()學習筆記
torch.nn.MaxPool2d()學習筆記
torch.nn.MaxPool2d()學習筆記

代碼實驗展示:

Microsoft Windows [版本 10.0.18363.1316]
(c) 2019 Microsoft Corporation。保留所有權利。

C:\Users\chenxuqi>conda activate ssd4pytorch1_2_0

(ssd4pytorch1_2_0) C:\Users\chenxuqi>python
Python 3.7.7 (default, May  6 2020, 11:45:54) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> from torch import nn as nn
>>> import torch.nn.functional as F
>>> torch.manual_seed(seed=20200910)
<torch._C.Generator object at 0x0000017E6FEED330>
>>>
>>> mxp  = nn.MaxPool2d(4, stride=2)
>>> data_in = torch.randn(32,3,64,48)
>>> data_in.shape
torch.Size([32, 3, 64, 48])
>>> data_out = mxp(data_in)
>>> data_out.shape
torch.Size([32, 3, 31, 23])
>>>
>>> data_in.shape
torch.Size([32, 3, 64, 48])
>>>
>>>
>>> output = F.max_pool2d(data_in,kernel_size=4,stride=2)
>>> output.shape
torch.Size([32, 3, 31, 23])
>>>
>>>
>>> output = F.max_pool2d(data_in,kernel_size=4)
>>> output.shape
torch.Size([32, 3, 16, 12])
>>>
>>>
>>>
           

繼續閱讀