目录
1 前言
卷积神经网络的缩写是CNN,CNN被用于人工智能各个方面,如图像识别,语音识别,几乎基于深度学习的的方法都是以CNN为基础的,本章介绍CNN的结构以及代码实现。
1.1 整体结构
CNN中的整体结构中增加了卷积层和池化层,在之前的神经网络结构中,我们知道有隐藏层Affiine和激活成RELU。还有softmax进行分类输出最终的结果
现在CNN中只是将之前的Affine层替换成了卷积层Convolution,把激活层替换成了池化层。
1.2卷积层
CNN中会出现很多新术语,并且其中传递的数据都是多维度的数据,
1.2.1 全连接层出现的问题
在之前的全连接神经网络中我们是基于Affiine层的,这种神经网络忽略了数据的形状,每一层都与上一层连接,如果一个数据是多维度的话在这种神经网络中会被变换成一列,无法利用与形状有关的信息,比如空间上相邻的像素有相似的值,RBG 的各个通道之间的关系。CNN解决了这一问题,可以输入输出多维数据,我们把输入/输出的数据叫做输入/输出特征图。
1.2.2 卷积运算
在卷积运算过程中要加入滤波器,在这里滤波器的维度是22 ,卷积神经网络的维度是33,通过在卷积神经网络上移动,然后与滤波器相同位置上的数值相乘后相加,这样就可以得到一个2*2维度的输出结果。
如下图所示
1.2.3 填充
我们在卷积神经网络的计算中经常要用到填充,可以在周围填充1、2、3像素的0,比如在44的卷积神经网络中填充1像素的0就变成了66维度,用33的滤波器就可以生成44 维度的输出特征值
那为什么要使用填充呢?我们知道44的输入与33 的滤波器相乘之后会产生2*2的输出结果比输入来说经过卷积运算之后空间变小了,为了避免这样的情况就会使用填充,确保输出空间结构和输入空间结构一样,然后再传递给下一层神经网络。
1.2.4 步幅
步幅就是将输入数据应用到滤波器的幅度,如果中间间隔一个就是步幅为2,如下图
1.2.5 三维数据的卷积运算
需要注意的是,输入的通道数(多少个二维矩阵)要和滤波器的通道数相同,如上图所示,滤波器的通道数和输入的通道数都为3。
1.2.6 结合方块思考
将数据和滤波器结合长方体的方块来考虑,3维数据的卷积
上面最后输出的是一个特征图,如果要输出多个特征图,也就是说要在通道上进行多个卷积运,那么我们就需要多个滤波器了,如下图所示:
1.2.7 批处理
上面都是基于一个输入块的,如果有多个输入块的化,怎么处理呢
1.3 池化层
池化是缩小高、长方向上的空间的运算。他能把激活函数的输出规模缩小,如下图所示: