1. 两个参数
in_channels | out_channels |
取决于图片类型: 如果是彩色的RGB类型,通道数为3; 如果是灰度图像,通道数为1。 | 卷积核的个数 |
2. 两个重要等式
卷积核通道数 = 卷积输入层的通道数 (k_channels = in_channels)
卷积输出层通道数 = 卷积核的个数 (out_channels = k_number) (注:通道数即深度)
3. 简单的卷积运算(padding=0,stride=1)
- 取输入矩阵中大小与卷积核相同的矩阵;
- 进行对应位置相乘,最后相加起来(多通道要相加起来),算出特征矩阵的一个位置的值;
- 多的卷积核同理相乘相加。
- (具体实现如下图)
4. 输出特征图尺寸计算
(1)根据卷积公式:
n | f | p | s |
输入特征宽高 | 卷积核宽高 | 填充padding | 步长stride |
则上图输出特征图尺寸为:
(2)同理,下面pytorch的卷积:
self.conv1 = nn.Sequential(
nn.Conv2d(
in_channels=1, # 灰度图像
out_channels=16, # 卷积核个数
kernel_size=3, # 卷积核大小3*3
stride=1,
padding=2
),
nn.ReLU(), # 激活
nn.MaxPool2d(kernel_size=2) # 池化
)
- 假入输入尺寸为 1*64*44,根据卷积公式:
n | f | p | s |
输入特征宽高 | 卷积核宽高 | 填充padding | 步长stride |
又:输出层深度 = 卷积核的个数 = 16
故:输出特征图的尺寸为 16*66*46
- 池化层核大小2*2,默认填充padding为0,默认步长stride=核大小=2,同理:
池化不改变通道数, 故输出特征图的尺寸为 16*33*23
5. 输出参数的数量计算
f | in | out |
卷积核大小 | in_channel | out_channel |
注:(1)bias为True时,要多加一个out
(2)当使用BN时,还有两个可学习的参数α和β,要多加 3*out