神经网络:LeNet-5解析

一: 卷积神经网络(CNN: Convolutional Neural Network)

       CNN是由一个或多个卷积层和顶端的全连通层组成,同时也包括关联权重和池化层等。下图就是一个经典的神经网络。

       卷积层:卷积层是卷积神经网络的核心层,而卷积(Convoltuion)是卷积层的核心。卷积运算就是用卷积分别乘以输入张量中的每一个元素,然后输出一个代表每个输入信息的张量。其中卷积核(Kernel) 又被称为权重过滤器,简称为过滤器(Fliter)。

神经网络:LeNet-5解析_第1张图片

 

       卷积计算公式:

  • H:图片高度
  • W:  图片宽度
  • D:原始图片通道数,也是卷积核个数
  • F: 卷积核高宽大小,一般取1*1,3*3,5*5,7*7等
  • P:图像边填充大小或者零填充
  • S:滑动步长

      则经过本层卷积运算后的输出即下一层的输入为:

  • H1 = ( H-F+2P ) / S +1
  • W1= ( W-F+2P ) / S +1
  • D1 = F

       池化层:池化(Pooling)又称下采样(Subsampling)。池化层在CNN中可用来减少尺寸、提高运算速度及减少噪声影响,让葛特征更具有健壮性。通常在卷积层的后面会加上一个池化层。池化的方式通常有三种:最大池化(MaxPooling);均值池化(MeanPooling);随机/概率池化。下图为最大池化示例:

神经网络:LeNet-5解析_第2张图片 Max Pooling

      激活函数:(Activation Function)就是对神经网络中某一部分神经元的非线性运算,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。激活函数一般要求可微,且不改变输入数据的维度。常见的激活函数有:Sigmoid函数、tanh函数、relu函数、softplus函数、dropout函数等。

       代价函数:代价函数是神经网络模型的效果评估及优化的目标函数,常用于监督学习中关于分类模型和回归模型中迭代优化。分类问题中常用交叉熵(cross_entropy)算法,回归问题常用误差评估(mean_squared_error)算法。

 

二 :CNN 之 LeNet-5 模型

         CNN 模型有很多变种,LeNet-5 模型就是比较有代表性的模型。

         LeNet-5 模型结构为输入层--卷积层--池化层--卷积层--池化层--全连接层--全连接层--输出层,为串联模型。如下图所示:

神经网络:LeNet-5解析_第3张图片

       各层参数详解:

       1. INPUT 输入层:

           图像数据归一化为 32*32 尺寸

       2. C1层-卷积层:

 

C1层-卷积层参数
输入图片 32*32  
卷积核大小 5*5  
卷积核数量(种类) 6  
输出FeatureMap 28*28 计算公式:H1 = ( H-F+2P ) / S +1
神经元数量 28*28*6  
可训练参数 (5*5+1)*6=156 每个卷积核5*5=25个参数和一个bias参数,一共6个卷积核
全连接数 (5*5+1)*6*28*28=122304  

      3. S2层-池化层

S2层-池化层参数
输入 28*28  
采样大小 2*2  
采样方式   4个输入相加,乘以一个可训练参数,再加上一个可训练偏置,结果通再过sigmoid函数。
采样种类 6  
输出FeatureMap 14*14  
神经元数量 14*14*6  
全连接数 (2*2+1)*14*14*6=5880  

      4. C3层-卷积层

C3层-卷积层参数
输入 S2中所有6个或者几个特征map组合  
卷积核大小 5*5  
卷积核数量(种类) 16  
输出FeatureMap 10*10

H1 = ( H-F+2P ) / S +1

神经元数量 10*10*16  
可训练参数

6*(3*5*5+1)

+6*(4*5*5+1)

+3*(4*5*5+1)

+1*(6*5*5+1)=1516

C3的前6个特征图以S2中3个相邻的特征图子集为输入;接下来6个特征图以S2中4个相邻特征图子集为输入;然后的3个以不相邻的4个特征图子集为输入;最后一个将S2中所有特征图为输入
全连接数 10*10*1516=151600  

           5. S4层-池化层

S4层-池化层参数
输入 10*10  
采样大小 2*2  
采样方式   4个输入相加,乘以一个可训练参数,再加上一个可训练偏置,结果通再过sigmoid函数。
采样种类 16  
输出FeatureMap 5*5  
神经元数量 5*5*16=400  
全连接数 (2*2+1)*5*5*16=2000  

            6. C5层-卷积层

C5层-卷积层参数
输入 S4层的全部16个FeatureMap(与s4全相连)  
卷积核大小 5*5  
卷积核数量(种类) 120  
输出FeatureMap 1*1

H1 = ( H-F+2P ) / S +1

神经元数量 1*1*120  
可训练参数 (5*5*16+1)*120=48120  
全连接数 (5*5*16+1)*120=48120  

          7.F6层-全连接层

F6层-全连接层参数
输入 C5层输出的 1*1*120 向量  
计算方式   计算输入向量和权重向量之间的点积,再加上一个偏置,结果通过sigmoid函数输出。
可训练参数 (1*1*120+1)*84=10164 F6层有84个节点,对应于一个7x12的比特图,-1表示白色,1表示黑色,这样每个符号的比特图的黑白色就对应于一个编码

          8. OUTPUT层-全连接层

          Output层也是全连接层,共有10个节点,分别代表数字0到9,且如果节点i的值为0,则网络识别的结果是数字i。采用的是径向欧式距离函数(RBF)的网络连接方式。假设x是上一层的输入,y是RBF的输出,则RBF输出的计算方式是:

          该层有84x10=840个参数和连接。

 

         LeNet-5 神经网络总结:

         LeNet5 这个网络虽然很小,但是它包含了深度学习的基本模块:卷积层,池化层,全连接层,是其他深度学习模型的基础。

 

 三 :参考链接

https://cuijiahua.com/blog/2018/01/dl_3.html

https://blog.csdn.net/XJY104165/article/details/78218057

 

 

 

 

 

 

你可能感兴趣的:(深度学习,神经网络)