lettuce框架_基于若依框架的二次开发「建议收藏」

lettuce框架_基于若依框架的二次开发「建议收藏」LeNet神经网络由深度学习三巨头之一的YanLeCun提出,他同时也是卷积神经网络(CNN,ConvolutionalNeuralNetworks)之父

0.OverView

1998年,LeCun等人发布了LeNet网络,从而揭开了深度学习的面纱,之后的深度神经网络都是在这个基础之上进行改进的,其结构如图所示:

lettuce框架_基于若依框架的二次开发「建议收藏」

lettuce框架_基于若依框架的二次开发「建议收藏」

此外,LeNet也是第一个成功的卷积神经网络应用,在当时主要用于识别数字和邮政编码,其用于手写数字识别的训练结果如图所示:

lettuce框架_基于若依框架的二次开发「建议收藏」

如图,在测试集上该网络可以实现对手写数字1%的识别错误率,此外网络10次迭代之后便可完成收敛。

和其他的分类器算法的相比,卷积神经网络表现不俗。LeCun等人还对比了LeNet与其他分类器在测试集上对手写数字分类的错误率,如图所示:

lettuce框架_基于若依框架的二次开发「建议收藏」

如图所示,运用数据增强方法之后的LeNet-5的错误率接近于V-SVM算法,而优化后的LeNet-4的错误率已低于当时表现较好的传统分类器算法。由此可见,在某些问题上,卷积神经网络的性能是由于传统的分类算法的。

1.Basic Structure

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

先验知识:

1.feature map 的大小是由公式 

f=lowerbound(\frac{i+2p-k}{s})+1  

决定,其中f是feature map的长/宽大小,i为输入图片的大小,p为填充,k为卷积核大小,s为步长。

2.神经元数量 = 特征图长*特征图宽*特征图通道数

3.卷积核种类/个数 =  一个滤波器中卷积核的个数

4.可训练参数数量  =   (滤波器大小+1)*滤波器中卷积核的个数

5.连接数  =  可训练参数数量 *  feature map 的大小

lettuce框架_基于若依框架的二次开发「建议收藏」

1.1 INPUT层-输入层

首先是数据 INPUT 层,输入图像的尺寸统一归一化为32*32。

注意:本层不算LeNet-5的网络结构,传统上,不将输入层视为网络层次结构之一。

1.2 C1层-卷积层

·输入图片:32*32

·卷积核大小:5*5

·卷积核种类:6

·输出featuremap大小:28*28   因为:(32+2*0-5+1)/2= 28

·神经元数量:28*28*6

·可训练参数:(5*5+1) * 6(每个滤波器5*5=25个unit参数和一个bias参数,一共6个滤波器)

·连接数:(5*5+1)*6*28*28=122304

说明:对输入图像进行第一次卷积运算(使用 6 个大小为 5*5 的卷积核),得到6个C1特征图(6个大小为28*28的 feature maps, 32-5+1=28)。先来看看需要多少个参数,卷积核的大小为5*5,总共就有6*(5*5+1)=156个参数,其中+1是表示一个核有一个bias。对于卷积层C1,C1内的每个像素都与输入图像中的5*5个像素和1个bias有连接,所以总共有156*28*28=122304个连接(connection)。有122304个连接,但是我们只需要学习156个参数,主要是通过权值共享实现的–可以理解为把(5*5+1) * 6个训练参数共享了28*28次。

1.3 S2层-池化层(下采样层)

输入:28*28

采样区域:2*2

采样方式:4个输入相加,乘以一个可训练参数(和的权值),再加上一个可训练偏置。结果通过sigmoid

采样种类:6

输出featureMap大小:14*14,因为(28/2)

神经元数量:14*14*6

可训练参数:2*6(和的权+偏置这两个参数)

连接数:(2*2+1)*14*14*6

说明:第一次卷积之后就是池化运算,使用 2*2核 进行池化,得到了S2,6个14*14的 特征图(28/2=14)。S2这个pooling层是对C1中的2*2区域内的像素求和乘以一个权值系数再加上一个偏置,然后将这个结果再做一次映射。于是每个池化核有两个训练参数,所以共有2×6=12个训练参数,但是有5x14x14x6=5880个连接。

1.4 C3层-卷积层

输入:S2中所有6个或者几个特征map组合

卷积核大小:5*5

卷积核种类:16

输出featureMap大小:10*10  ,因为 (14-5+1)=10

可训练参数为:6*(3*5*5+1)+6*(4*5*5+1)+3*(4*5*5+1)+1*(6*5*5+1)=1516

连接数:10*10*6*{(3*5*5+1)+6*(4*5*5+1)+3*(4*5*5+1)+1*(6*5*5+1)}=151600

说明:C3特征图不是直接由S2和16个卷积核卷积运算直接得来的,而是采取特征图组合方式得出的:

· C3中前6个特征图来自于S2中任意连续的3个特征图作为输入与5* 5 *3大小的卷积核运算得来,S2中连续的3个特征图共有6种组      合,所以得出C3中6个特征图则需要6个5* 5* 3的卷积核。

· C3中随后6个特征图来自于S2中任意连续的4个特征图,类似的最终需要6个5 *5 *4大小的卷积核。

· C3中再后面的3个特征图来自于S2中两两不相邻的4个特征图,共3种组合所以需要3个5* 5 *4大小的卷积核。

· C3最后的1个特征图来自于S2中所有的特征图,因此需要的1个大小为5* 5* 6的卷积核。

示意图如下:

lettuce框架_基于若依框架的二次开发「建议收藏」

1.5 S4层-池化层(下采样层)

输入:10*10

采样区域:2*2

采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid

采样种类:16

输出featureMap大小:5*5 ,因为(10/2)

神经元数量:5*5*16=400

可训练参数:2*16=32(和的权+偏置)

连接数:16*(2*2+1)*5*5=2000

说明:S4是pooling层,窗口大小仍然是2*2,共计16个feature map,C3层的16个10×10的图分别进行以2×2为单位的池化得到16个5×5的特征图。这一层有2×16共32个训练参数,5x5x5x16=2000个连接。连接的方式与S2层类似。 

1.6 C5层-卷积层

输入:S4层的全部16个单元特征map(与s4全相连)

卷积核大小:5*5

卷积核种类:120

输出featureMap大小:1*1 ,因为(5-5+1)

可训练参数/连接:120*(16*5*5+1)=48120

说明:C5层是一个卷积层。由于S4层的16个图的大小为5×5,与卷积核的大小相同,所以卷积后形成的图的大小为1×1。这里形成120个卷积结果。每个都与上一层的16个图相连。所以共有(5x5x16+1)x120 = 48120个参数,同样有48120个连接。

1.7 F6层-全连接层

输入:c5的120维向量

计算方式:计算输入向量和权重向量之间的点积,再加上一个偏置,结果通过Tanh函数输出。

F6层的激活函数是双曲正切函数tanh,将输出映射到(-1,1),对应到ascll编码

可训练参数:84*(120+1)=10164

说明:第6层是全连接层。F6层有84个节点,对应于一个7*12的比特图,这样每个ASCII符号对应于一串84位编码(即所有下图的ASCII符号都对应一串84位的编码),该层的训练参数和连接数是(120+1)x84=10164。

lettuce框架_基于若依框架的二次开发「建议收藏」

F6层的连接方式如下:

lettuce框架_基于若依框架的二次开发「建议收藏」

1.8 Output层-全连接层

Output层也是全连接层,共有10个节点,分别代表数字0到9,且如果节点i的值为0,则网络识别的结果是数字i。

采用的是径向基函数(RBF)的网络连接方式。假设x是上一层的输入,y是RBF的输出,则RBF输出的计算方式是:

lettuce框架_基于若依框架的二次开发「建议收藏」  

上式wij 的值由i的比特图编码确定,i从0到9,j取值从0到7*12-1。RBF输出的值越接近于0,则越接近于i,即越接近于i的ASCII编码图,表示当前网络输入的识别结果是字符i。该层有84×10=840个参数和连接,没有偏置了。

参考:

卷积神经网络结构简述(一)LeNet系列网络

LeNet网络详解

今天的文章lettuce框架_基于若依框架的二次开发「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/74825.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注