7.1 整体结构
全连接和CNN的对比
7.2 卷积层
7.2.1 全连接层存在的问题
MNIST数据集例子中,图片是2828的,但是训练/预测时,将2828的数据排列成一列, 以784个数据的形式输入到神经网络。忽略了数据的“形状”
图像通常是高,长,通道方向上的三位形状。这个形状中包含了重要的空间信息。而全连接神经网络忽视了这个信息。
而卷积层可以保持形状不变。当输入数据是图像时,卷积层会以3维 数据的形式接收输入数据,并同样以3维数据的形式输出至下一层。因此, 在CNN中,可以(有可能)正确理解图像等具有形状的数据。
另外,CNN中,有时将卷积层的输入输出数据称为特征图(feature
map)。其中,卷积层的输入数据称为输入特征图(input feature map),输出 数据称为输出特征图(output feature map)
7.2.2 卷积运算
卷积层进行的处理就是卷积运算。
书中的卷积例子是:输入大小(4, 4),滤波器(核)(3, 3),输出大小是(2, 2)
具体过程:
将各个位置上滤波器的元素核输入的对应元素相乘,然后再求和(乘积累加运算)
有偏置的情况下
7.2.3 填充(padding)
在进行卷积层的处理之前,有时要向输入数据的周围填入固定的数据(比如0),这个过程就叫填充
通过填充,大小为(4, 4)的输入数据变成了(6, 6)的形状。然后,应用大小为(3, 3)的滤波器,生成了大小为(4, 4)的输出数据。
使用填充主要是为了调整输出的大小。比如,对大小为(4, 4)的输入 数据应用(3, 3)的滤波器时,输出大小变为(2, 2),相当于输出大小 比输入大小缩小了2个元素。这在反复进行多次卷积运算的深度网 络中会成为问题。为什么呢?因为如果每次进行卷积运算都会缩小 空间,那么在某个时刻输出大小就有可能变为1,导致无法再应用 卷积运算。为了避免出现这样的情况,就要使用填充。在刚才的例 子中,将填充的幅度设为1,那么相对于输入大小(4, 4),输出大小 也保持为原来的(4, 4)。因此,卷积运算就可以在保持空间大小不变 的情况下将数据传给下一层。
7.2.4 步幅(stride)
应用滤波器的位置间隔称为步幅(stride)。
输出大小的计算公式