Tensorflow 入门学习13.卷积神经网络原理3.(网络结构详解)

版权声明:(谢厂节的博客)博主文章绝大部分非原创,转载望留链接。 https://blog.csdn.net/xundh/article/details/82914872

本文学习内容来自《TensorFlow深度学习应用实践》
从前面介绍的卷积运算的基本原理和概念,从本质上来说卷积神经网络就是将图像处理的二维离散卷积运算和神经网络相结合。这种卷积运算可以用于自动提取特征,而卷积神经网络也主要应用于二维图像的识别。

卷积神经网络原理

一个卷积神经网络包含一个输入层、一个卷积层、一个输出层,但是在真正使用的时候一般会使用多层卷积神经网络不断地去提取特征,特征越抽象,越有利于识别(分类)。而且通常卷积神经网络也包含池化层、全连接层,最后再接输出层。
一幅图片进行卷积神经网络处理的过程:

  1. 图像输入:获取输入的数据图像
  2. 卷积:对图像特征进行提取
  3. maxpool:用于缩小在卷积时获取的图像特征
  4. 全连接层:用于对图像进行分类
    在这里插入图片描述

这几个步骤依次进行,分别具有不同的作用。而经过卷积层的图像被分别提取特征后获得分块的同样大小的图片:
在这里插入图片描述

可以看到,经过卷积处理后的图像被分为若干个大小相同的只具有局部特征的图片。下面则对分解后的图片使用一个小型神经网络做进一步处理,即将二维矩阵转化成一维数组:
在这里插入图片描述

在这个步骤,也就是对图片进行卷积化处理时,卷积算法对所有的分解后的局部特征进行同样的计算,这个步骤称为“权值共享”,其依据是:

  • 对图像等数组数据来说,局部数组的值经常是高度相关的,可以形成容易被探测到的独特的局部特征
  • 图像和其它信号的局部统计特征与其位置是不太相关的,如果特征图能在图片的一个部分出现,也能出现在任何地方。所以不同位置的单元共享同样的权重,并在数组的不同部分探测相同的模式。

数学上,这种由一个特征图执行的过滤操作是一个离散的卷积,卷积神经网络由此得名。

池化层的作用是对获取的图像特征进行缩减,从前面的例子中可以看 到,使用[2,2]大小的矩阵来处理特征矩阵,使得原有的特征矩阵可以缩减到1/4大小,特征提取的池化效应,如图:
在这里插入图片描述

经过池化处理的图像矩阵作为神经网络的数据输入,这是一个全连接层对所有的数据进行分类处理,并且计算这个图像所求位置概率最大值。

通俗的概括,卷积神经网络是一个层级递增的结构。

卷积神经网络的应用案例——LeNet5网络结构

在计算机视觉中卷积神经网络取得了巨大的成功,它在工业上以及商业上的应用很多,一个商业上最典型的应用就是识别支票上的手写数字的LeNet5神经网络。从20世纪90年代开始美国大多数银行都用这种技术识别支票上的手写数字。
实际应用中的LeNet5卷积神经网络共有8层,其中每层都包含可训练的神经元,而连接神经元的是每层的权重。

在这里插入图片描述
8层LeNet5神经网络。

INPUT

首先对于INPUT层来说,这是数据的输入层,在原始模型框架中,输入图像大小为[32,32],这样能够将所有的手写信息被神经网络感受到。

C1

第一个卷积层C1是最初开始进行卷积计算的层,形成6个特征图谱。卷积层特征的计算公式:
x i = f ( ( x i i 1 K i j l ) + b j i ) x^i=f((\sum{x_i^{i-1}*K_{ij}^l) + b_j^i})
其中 x i i 1 K i j l x_i^{i-1}*K_{ij}^l 表示从第1层到l+1层要产生的feature数量,即5*5=25个;
b代表 bias的数量,这里的bias是1。

卷积的输入区域大小是5x5,每个特征图谱内参数共享,即每个特征图谱内只使用一个共同卷积核,卷积核有5x5个连接参数加上1个偏置共26个参数。卷积区域每次滑动一个像素,这样卷积层形成的每个特征图谱大小是(32-5)/1+1=28x28。C1层共有6*(55+1)=156个训练参数,对于C1层来说,每个像素都与前一个输入层的像素相连接,因此对于C1层,总共有15628*28=122304个连接。C1层的连接结构如下所示。

C1层连接结构:
在这里插入图片描述

LeNet5 C1到S2层的连接如下图所示:

在这里插入图片描述

S2

S2是一个下采样层。这里是C1中的[2,2]区域内的像素求和再加上一个偏置,然后将这个结果再做一次映射(sigmoid等函数),所以相当于对S1做了降维,此处共有62=12个参数。S2中的每个像素都与C1中的22个像素和1个集团相连接,所以有6514*14=5880个连接。
在这里插入图片描述

S2到C3

LeNet5最复杂的就是S2到C3层,其连接如图所示:
在这里插入图片描述

前6个feature map与S2层相连的3个feature map相连接,后面6个feature map与S2层相连的4个feature map相连接,后面3个feature map与S2层部分不相连的4个feature map相连接,最后一个与S2层的所有feature map相连。卷积核大小依然是55,所以总共有6(355+1)+6*(455+1)+3*(455+1)+1*(655+1)=1516个参数。而图像大小为10*10,所以共有151600个连接。

C3

C3层也是一个卷积层

S4

S4是一个下采样Pooling层,窗口大小仍然是22,共计16个feaure map,所以32个参数。16(25*4+25)=2000个连接。
在这里插入图片描述

C5

C5是卷积层,共120个feature map,每个feature map 与S4层所有的feature map相连接,卷积核大小是55,而S4层feature map大小也是55,所以C5的feature map就变成了1个点,共计有128*(25*16+1)=48120个参数。
在这里插入图片描述

F6

最后一个F6层也是全连接层,有84个节点,所以有84*(120+1)=10164个参数。F6层采用了正切函数,计算公式为:
x i = f ( a i ) = t a n h ( a i ) x^i=f(a_i)=tanh(a_i)
在这里插入图片描述

输出层

最后是输出层,以上这8层合在一起构成了LeNet5神经网络的全部结构。
在这里插入图片描述

卷积神经网络的训练

卷积神经网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要在任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具有输入输出对之间的映射能力。卷积网络执行的是有导师训练,所以其样本集是由形如(输入向量、理想输出向量)的向量对构成的。
卷积神经网络的具体使用上和一般反馈神经网络相同,分成前向和后向传播。

第一阶段,向前传播阶段:

   a)从样本集中取一个样本(X,Yp),将X输入网络; 
   b)计算相应的实际输出Op。 
   在此阶段,信息从输入层经过逐级的变换,传送到输出   层。这个过程也是网络在完成训练后正常运行时执行的过程。在此过程中,网络执行的是计算(实际上就是输入与每层的权值矩阵相点乘,得到最后的输出结果): 
   Op=Fn(…(F2(F1(XpW(1))W(2))…)W(n)) 

第二阶段,向后传播阶段

a)算实际输出Op与相应的理想输出Yp的差;
b)按极小化误差的方法反向传播调整权矩阵。

下一节学习TensorFlow实现LeNet实例。

参考内容:
https://blog.csdn.net/xukaiwen_2016/article/details/70880694
https://blog.csdn.net/happyorg/article/details/78274066

猜你喜欢

转载自blog.csdn.net/xundh/article/details/82914872
今日推荐