参考链接: torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode=‘zeros’)
参考链接: Convolution arithmetic
参考链接: 神经网络与深度学习
参考链接: 二维转置卷积和空洞卷积示例
总结:
输入数据的形状是:(N,Cin,Hin,Win)
分别是batchsize、输入通道、高度和宽度
输出数据的形状是:(N,Cout,Hout,Wout)
二维卷积不改变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
>>> conv1 = nn.Conv2d(16, 128, 4, stride=2)
>>> input_data = torch.randn(32,16,64,48)
>>> input_data.shape
torch.Size([32, 16, 64, 48])
>>> output_data = conv1(input_data)
>>> output_data.shape
torch.Size([32, 128, 31, 23])
>>>
>>>
>>>