CNN理解笔记

转载: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

image

能够看出,CNN中主要有两种类型的网络层,分别是卷积层池化/采样层(Pooling)。卷积层的做用是提取图像的各类特征;池化层的做用是对原始特征信号进行抽象,从而大幅度减小训练参数,另外还能够减轻模型过拟合的程度。blog

卷积层

卷积层是卷积核在上一级输入层上经过逐一滑动窗口计算而得,卷积核中的每个参数都至关于传统神经网络中的权值参数,与对应的局部像素相链接,将卷积核的各个参数与对应的局部像素值相乘之和,(一般还要再加上一个偏置参数),获得卷积层上的结果。以下图所示。图片

image

下面的动图可以更好地解释卷积过程:get

image

池化/采样层

经过卷积层得到了图像的特征以后,理论上咱们能够直接使用这些特征训练分类器(如softmax),可是这样作将面临巨大的计算量的挑战,并且容易产生过拟合的现象。为了进一步下降网络训练参数及模型的过拟合程度,咱们对卷积层进行**池化/采样(Pooling)**处理。池化/采样的方式一般有如下两种:

  • Max-Pooling: 选择Pooling窗口中的最大值做为采样值;
  • Mean-Pooling: 将Pooling窗口中的全部值相加取平均,以平均值做为采样值;

以下图所示。

image

LeNet-5网络详解

以上较详细地介绍了CNN的网络结构和基本原理,下面介绍一个经典的CNN模型:LeNet-5网络

image.png

image

image.png

image

image.png

image

image.png

LeNet-5网络在MNIST数据集上的结果

进一步了解可参考:http://www.javashuo.com/article/p-zrhdrexh-mu.html

相关文章
相关标签/搜索