转载:http://www.javashuo.com/article/p-qhxvfizb-kv.html算法
**卷积神经网络(Convolutional Neural Network, CNN)相较于传统的图像处理算法的优势之一在于,避免了对图像复杂的前期预处理过程(提取人工特征等),能够直接输入原始图像。网络
图像处理中,每每会将图像当作是一个或多个的二维向量,如MNIST手写体图片就能够看作是一个28 × 28的二维向量(黑白图片,只有一个颜色通道;若是是RGB表示的彩色图片则有三个颜色通道,可表示为三张二维向量)。传统的神经网络都是采用全链接的方式,即输入层到隐藏层的神经元都是所有链接的,这样作将致使参数量巨大,使得网络训练耗时甚至难以训练,而CNN则经过**局部链接
、权值共享
**等方法避免这一困难学习
卷积神经网络CNN的结构通常包含这几个层:.net
输入层:用于数据的输入 卷积层:使用卷积核进行特征提取和特征映射 激励层:因为卷积也是一种线性运算,所以须要增长非线性映射 池化层:进行下采样,对特征图稀疏处理,减小数据运算量。 全链接层:一般在CNN的尾部进行从新拟合,减小特征信息的损失 输出层:用于输出结果 固然中间还可使用一些其余的功能层:3d
归一化层(Batch Normalization):在CNN中对特征的归一化 切分层:对某些(图片)数据的进行分区域的单独学习 融合层:对独立进行特征学习的分支进行融合code
下图是一个经典的CNN结构,称为**LeNet-5网络
**。orm
能够看出,CNN中主要有两种类型的网络层,分别是卷积层和池化/采样层(Pooling)。卷积层的做用是提取图像的各类特征;池化层的做用是对原始特征信号进行抽象,从而大幅度减小训练参数,另外还能够减轻模型过拟合的程度。blog
卷积层是卷积核在上一级输入层上经过逐一滑动窗口计算而得,卷积核中的每个参数都至关于传统神经网络中的权值参数,与对应的局部像素相链接,将卷积核的各个参数与对应的局部像素值相乘之和,(一般还要再加上一个偏置参数),获得卷积层上的结果。以下图所示。图片
下面的动图可以更好地解释卷积过程:get
经过卷积层得到了图像的特征以后,理论上咱们能够直接使用这些特征训练分类器(如softmax),可是这样作将面临巨大的计算量的挑战,并且容易产生过拟合的现象。为了进一步下降网络训练参数及模型的过拟合程度,咱们对卷积层进行**池化/采样(Pooling)**处理。池化/采样的方式一般有如下两种:
以下图所示。
以上较详细地介绍了CNN的网络结构和基本原理,下面介绍一个经典的CNN模型:LeNet-5网络
。
LeNet-5网络在MNIST数据集上的结果