参考链接: 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
参考链接: 神经网络与深度学习
参考链接: 二维转置卷积和空洞卷积示例
总结:
输入数据形状是(N,C,H,W),分别是batchsize、通道数、高度和宽度.
输出不改变batchsize和通道数,只改变高度和宽度.
高度和宽度的计算公式如下:
代码实验展示:
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])
>>>
>>>
>>>