LeNet框架详解

0.OverView

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


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

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

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

如图所示,运用数据增强方法之后的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 的大小

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区域内的像素求和乘以一个权值系数再加上一个偏置,然后将这个结果再做一次映射。于是每个池化核有两个训练参数,所以共有2x6=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的卷积核。

示意图如下:

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个10x10的图分别进行以2x2为单位的池化得到16个5x5的特征图。这一层有2x16共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个图的大小为5x5,与卷积核的大小相同,所以卷积后形成的图的大小为1x1。这里形成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。

F6层的连接方式如下:

1.8 Output层-全连接层

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

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

  

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

参考:

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

LeNet网络详解

  • 9
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
PyTorch是一个开源的深度学习框架,它提供了丰富的工具和库,用于构建和训练神经网络模型。下面是对PyTorch框架的详细解释: 1. 动态计算图:PyTorch使用动态计算图的概念,这意味着在编写代码时可以实时定义和修改计算图。这种灵活性使得在模型训练过程中可以轻松地进行动态调整和调试。 2. 张量操作:PyTorch的核心是张量(Tensor),它是一种多维数组。PyTorch提供了丰富的张量操作,例如加法、减法、乘法、除法等,可以高效地进行数学运算。 3. 自动求导:PyTorch的自动求导功能使得在神经网络模型中计算梯度变得非常简单。通过将张量设置为需要进行梯度计算的变量,可以自动跟踪其上的操作并计算梯度。 4. 模型构建:PyTorch提供了一个灵活的方式来构建神经网络模型。可以通过继承nn.Module类来定义自己的模型,并重写forward函数来定义前向传播过程。 5. 预训练模型:PyTorch内置了一些常用的预训练模型,例如ResNet、VGG和BERT等。这些模型已经在大规模数据集上进行了预训练,并可以用于特定任务的微调或迁移学习。 6. 分布式训练:PyTorch支持在多个GPU和多台机器上进行分布式训练。通过使用torch.nn.DataParallel或torch.nn.parallel.DistributedDataParallel,可以轻松地实现模型的并行训练。 总之,PyTorch是一个功能强大且易于使用的深度学习框架,它提供了灵活的动态计算图、丰富的张量操作、自动求导功能以及方便的模型构建和训练工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值