【啃书吧:深度学习与MindSpore实践】第五章 5.1 卷积操作
初读:2021年4月20日至2021年4月23日
今天开始第5章 “卷积神经网络”。卷积神经网络是一种前向神经网络,表示在网络中采用卷积的数学运算。卷积神经网络是一种特殊的神经网络,在至少一个层中使用卷积代替一般矩阵乘法运算。
啃书进度会在目录中标出来。本次目标是完成第5章 5.1节 卷积操作(P57-P59)。
卷积(Convolution)操作是卷积神经网络的基本操作,与多层感知机中**点乘加和**操作不同的是,卷积操作相当 于一个滑动窗口,从左到右、从上到下地滑动(在此节仅讨论二维的卷积操作),每滑动一下,就得出一个加权平均值,它更关注一小块或者局部的数据信息。卷积操作包括两个重要的组成部分:
- 输入矩阵(Input),对应感知机中的输入
- 卷积核(Kernel),也称为滤波器(Filter),对应感知机中的权重。
书中图5.1表现了输入矩阵、卷积核与特征图之间有关系,通过卷积核(其实也是一个矩阵)在输入矩阵上滑动,可以得到所需的输出矩阵(又叫特征图)。
图5.2“卷积操作的步骤”解释了一个3×3的卷积核在一个4×5的输入矩阵上滑动,生成一个2×3的特征图的过程。
可以看到卷积核对输入矩阵重复计算卷积,遍历了整个矩阵,每一个输出都对应输入矩阵的一小块局部特征。卷积操作的另一个优点在于参数少,如图5.2中,输出的2×3矩阵共享了同一个3×3核矩阵,即参数共享(Parameter Sharing)。对比一下,如果使用全连接则需要25×6的权重矩阵。另外,卷积运算是独立的,并不需要按照固定的顺序扫描,因此可以利用这个特性开发并行算法,多个方块的卷积值同时计算,提高运算效率。
有时想要调整输出矩阵的大小,那么就要提到两个重要的参数,即步长(Stride)和填补(Padding)。步长的影响如图5.3“步长示意图”所示,卷积核横向移动的步长是2,纵向步长仍然是1。
填补操作如书中图5.4所示,就是在原始图像边缘之外的区域填充0(假像素)。如果没有填充,像图片边缘的元素也只会出现在卷积的边缘,填充之后,由于原图边缘外又多出了元素,所以卷积核就可以把边缘像素也作为中心进行计算。
在上述例子中,只介绍了一个输入矩阵和一个核矩阵的卷积操作。事实上可以有多个相同(指矩阵的尺寸)的矩阵叠加在一起,典型的如图像,通常有3个通道(Channels),分别代表红、绿、蓝三色。书中图5.5给出一个彩色图像的多通道卷积操作——用三个卷积核分别在各自的通道上进行卷积操作,再把三个输出矩阵相加,得到最终的特征图。注意:每个通道都有各自不同的核矩阵,如果输入通道数为c1个,输出通道数为c2个,则共需要c1 × c2个核矩阵。