卷积神经网络(Convolutional neural network, CNN),属于人工神经网络的一种,被应用于图像识别、语音识别等各类场合。html
咱们知道,神经网络的基本组成包括输入层、隐藏层、输出层。卷积神经网络的特色就在于隐藏层分为卷积层和池化层。git
下面咱们先来看看卷积神经网络的总体结构github
图中有多个“Affine-ReLU”组合,最后一层是“Affine-Softmax”组合,经过Softmax输出最终结果(几率)web
比较上面两张图,咱们能够发现,CNN中新增长了Convlution层和Pooling层,CNN的层的链接顺序是“Conv-ReLU-(Pool)”,(Pooling层有时会被省略)网络
在神经网络中,咱们使用全链接层(Affine),相邻层的神经元所有链接在一块儿,输出的数量能够任意决定。app
那么为何要将全链接层换成卷积层呢?svg
由于,全链接层将数据的形状给“忽略”了,使用神经网络来训练MNIST数据,输入数据是图像,三维形状(1,28,28)表示(通道,高,长),输入的数据是将三维数据拉平为一维数据,以784个数据的形式输入到最开始的全链接层。学习
可是,这个忽略了图像三维形状中包含的空间信息,好比,空间上邻近的像素为类似的值、RGB的各个通道之间也存在密切的关联性,因此使用全链接没法利用与形状相关的信息。动画
使用卷积层,能够保持图像数据的形状不变,输入图像数据时,卷积层会以三维数据的形式接收输入数据,而且一样以三维数据输出至下一层spa
卷积运算 动画演示
上图是单通道的运算,卷积运算在输入数据中以必定间隔滑动卷积核的窗口并运算(相应元素相乘在求和),而后将结果输出到对应的位置,将这个过程在全部位置都进行一遍,即可以获得卷积运算的结果。
在全链接的神经网络中,除了权重,还存在偏置。CNN中,卷积核的参数对应以前的权重,而且CNN也存在偏置,卷积运算后获得结果的每一个元素都加上偏置,以下图:
综上,增大步幅后,输出大小会变小;增大填充后,输出大小会变大
设输入大小为(H,W),卷积核大小为(FH,FW),输出大小为(OH,OW),填充为P,步幅为S,此时:
上面的动画演示的就是三维数据的卷积运算,图像数据除了高、长方向以外,还须要处理通道方向。
通道方向上有多个特征图时,会按通道进行输入数据和卷积核的卷积运算,并将结果相加,从而获得结果
上图为“Max池化”最大值池化,是获取最大值的运算,在“2 × 2”的目标区域内取最大值;
平均值池化,就是在目标区域中计算平均值