Tensorflow2.0笔记30——卷积神经网络
Tensorflow2.0笔记
本博客为Tensorflow2.0学习笔记,感谢北京大学微电子学院曹建老师
2.卷积神经网络
2.1卷积的概念
1.卷积的概念:卷积可以认为是一种有效提取图像特征的方法。一般会用一个正方形的卷积核,按指定步长,在输入特征图上滑动,遍历输入特征图中的每个像素点。每一个步长, 卷积核会与输入特征图出现重合区域,重合区域对应元素相乘、求和再加上偏置项得到输出特征的一个像素点,如图 5-4 所示,利用大小为 3×3×1 的卷积核对 5×5×1 的单通道图像做卷积计算得到相应结果。
2.2 彩色图像
2.对于彩色图像(多通道)来说,卷积核通道数与输入特征一致,套接后在对应位置上进行乘加和操作,如图5- 5所示,利用三通道卷积核对三通道的彩色特征图做卷积计算。
2.3多个卷积核情况
3.用多个卷积核可实现对同一层输入特征的多次特征提取,卷积核的个数决定输出层的通道(channels)数, 即输出特征图的深度
2.4感受野
4.感受野 (Receptive Field)的概念 :卷积神经网络各输出层每个像素点在原始图像上的映射区域大小,如图5- 7所示。
当我们采用尺寸不同的卷积核时,最大的区别就是感受野的大小不同,所以经常会采用多层小卷积核来替换一层大卷积核,在保持感受野相同的情况下减少参数量和计算量,例如十分常见的用2层3 * 3卷积核来替换1层5 * 5卷积核的方法,如图5- 7所示。
这里给出详细推导:不妨设输入特征图的宽、高均为 x,卷积计算的步长为 1,显然, 两个 3 * 3 卷积核的参数量为 9 + 9 = 18,小于 5 * 5 卷积核的 25,前者的参数量更少。
在计算量上,根据图 5-8 所示的输出特征尺寸计算公式,对于 5 * 5 卷积核来说,输出特征图共有(x – 5 + 1)^2 个像素点,每个像素点需要进行 5 * 5 = 25 次乘加运算,则总计算量为 25 * (x – 5 + 1)^2 = 25x^2 – 200x + 400;
对于两个 3 * 3 卷积核来说,第一个 3 * 3 卷积核输出特征图共有(x – 3 + 1)^2 个像素点,每个像素点需要进行 3 * 3 = 9 次乘加运算,第二个 3 * 3 卷积核输出特征图共有(x – 3 + 1 – 3+ 1)^2 个像素点,每个像素点同样需要进行 9 次乘加运算,则总计算量为 9 * (x – 3 + 1)^2 + 9 * (x – 3 + 1 – 3 + 1)^2 = 18 x^2 – 108x + 180;
对二者的总计算量(乘加运算的次数)进行对比,18 x^2 – 200x + 400 < 25x^2 – 200x + 400,经过简单数学运算可得 x < 22/7 or x > 10,x 作为特征图的边长,在大多数情况下显然会是一个大于 10 的值(非常简单的 MNIST 数据集的尺寸也达到了 28 * 28),所以两层 3 * 3 卷积核的参数量和计算量,在通常情况下都优于一层 5 * 5 卷积核,尤其是当特征图尺寸比较大的情况下,两层 3 * 3 卷积核在计算量上的优势会更加明显。