CNN(Convolutional Neural Networks,卷积神经网络),CNN在图像、提取空间信息中有着广泛的应用,CNN通常包含以下几种神经层:
- 卷积层 Convolutional layer
- 池化层 Pooling layer
- 全连接层 Fully-Connected layer
- 线性整流层 Rectified Liner Units layer
一般通过堆叠上述神经层组成CNN网络,在本文中将以清晰的示例说明如何计算不同神经层的输出参数大小。
本文将以最简单的猫狗图片分类作为说明示例,假设有一张有RGB 3个颜色通道,宽32,高32的图片,我们通过将其输入到CNN中对该图片进行分类,判断是猫还是狗。
1 卷积层的输出
卷积层是构成CNN网络的核心,其基本上完成了大量繁重的计算工作。一般有以下参数影响卷积层的输出:
- filter num:卷积核的数量
- filter size:卷积核的大小
- stride:卷积的步长
- padding:卷积的填充
对于卷积层的计算,假设卷积层输入为W_{input}\times H_{input} \times D_{input},其中W_{input}为输入的宽度,H_{input}为输入的高度,D_{input}为输入的维度(通道数),经过卷积核数量为K,卷积核大小为F,卷积步长为S,卷积填充为P的卷积层,则该卷积层的输出为,
在没有padding的情况下
W_{output} = \frac{W_{input}-F}{S} + 1\\
H_{output} = \frac{H_{input}-F}{S} + 1\\
D_{output} = K
\end{array}
在有padding的情况下
W_{output} = \frac{W_{input}-F+2P}{S} + 1\\
H_{output} = \frac{H_{input}-F+2P}{S} + 1\\
D_{output} = K
\end{array}
假设CNN输入图片的维度为3\times 32\times 32,其中通道数为3,宽为32,高为32,假设CNN第一个卷积层卷积核数量为10,卷积核大小为3\times 3,卷积步长为2,卷积填充为0,则该卷积层输出大小为
W = \frac{32-3+0}{2} + 1 = 15\\
H = \frac{32-3+0}{2} + 1 = 15\\
D = 10
\end{array}
2 池化层的输出
增加池化层的目的主要是下采样(downsamples)。
在CNN中,在连续的卷积层中增加一个池化层可以逐渐减小表示的空间大小,从而减少网络中参数数量和计算量,并且能够在一定程度上防止过拟合。
最常见的池化层规模为2 \times 2,在输入的每个深度切片沿宽度和高度进行下采样。
在进行池化时,通常不使用任何填充,所以padding通常为0。
对于池化层的计算,假设输入层为W_{input}\times H_{input} \times D_{input},其中W_{input}为输入的宽度,H_{input}为输入的高度,D_{input}为输入的维度(通道数),经过过滤器数量为K,池化大小为F,步长为S的池化层,则该池化层的输出为,
W_{output} = \frac{W_{input}-F}{S} + 1\\
H_{output} = \frac{H_{input}-F}{S} + 1\\
D_{output} = K
\end{array}
假设输入为15\times 15\times 10,使用过滤器数量为10,池化大小为2 \times 2,步长为2的池化层进行池化处理,则输出的大小为
W = \frac{15-2}{2} + 1 = 7\\
H = \frac{15-2}{2} + 1 = 7\\
D = 10
\end{array}
3 全连接层的输出
全连接层主要是将输入的tensor进行展平。
对于全连接层的计算,假设输入层为W_{input}\times H_{input} \times D_{input},其中W_{input}为输入的宽度,H_{input}为输入的高度,D_{input}为输入的维度(通道数),经过全连接层的输出为
outputsize = W_{input}\times H_{input}\times D_{input}
\end{array}
假设输入为7\times 7\times 10,则输出为
outputsize = 7 \times 7\times 10 = 490
\end{array}
在经过全连接层处理之后,490个数字可以组成一个长向量,然后将其输入到Softmax
中对分类进行预测。
参考链接
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:深度学习 – CNN中卷积层、池化层、全连接层的输出参数大小的计算
原文链接:https://www.stubbornhuang.com/2160/
发布于:2022年06月09日 14:11:19
修改于:2023年06月26日 20:07:12
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
52