• CNN经典网络模型详解LeNet(LeNet-1, LeNet-4, LeNet-5最详细, Boosted LeNet-4)发展和过程


    1.LeNet-5详细

    2.回顾LeNet其他模型结构

    3.补充

    一、LeNet-5详细

    在这里插入图片描述
    LeNet-5是最受欢迎的LeNet-5,与LeNet-4相比只有细微差别,32x32的输入图像 – 6个28×28 feature maps 卷积层(5×5 size) --平均池化层(2×2大小)-- 16个10×10 feature maps 卷积层(5×5 size) – 平均池化层(2×2大小)-- 全连接到120个神经元 --全连接84个神经元 – 全连接到10个输出

    这里用手写字体识别举例

    如输入:32*32的手写字体图片,这些手写字体包含0~9数字,也就是相当于10个类别的图片,因此神经网络的最后输出层必然是SoftMax问题,然后神经元的个数是10个

    输出:分类结果,0~9之间的一个数
    在这里插入图片描述
    网络层及

    网络层\简介输入输出(卷积/池化)窗口可训练参数
    C1(卷积层)32*32灰度图像6个尺寸为28*28的FeatureMap6个5*5卷积核156
    S2(池化层)6个尺寸为28*28的FeatureMap6个尺寸为14*14的FeatureMap2*2池化窗口12
    C3(卷积层)6个尺寸为14*14的FeatureMap16个尺寸为10*10的FeatureMap16个5*5卷积核1516
    S4(池化层)16个尺寸为10*10的FeatureMap16个尺寸为5*5的FeatureMap2*2池化窗口32
    C5(卷积层16个尺寸为5*5的FeatureMap120个尺寸为1*1的FeatureMap120个5*5卷积核48120
    F6(全连接层)120个特征84个特征None10164
    Output(输出层)84个特征10维向量None840

    输出特征图大小公式
    在这里插入图片描述
    特征图:其实一张图片经过一个卷积核进行卷积运算,我们可以得到一张卷积后的结果图片,而这张图片就是特征图。

    卷积层卷积层通过卷积层,可使得信号特征增强,降低噪声;故其主要作用是降低图像噪声,提取图像重要特征。此外,卷积层能够保证图像的平移不变性,卷积运算保留了图像的空间信息,卷积后的图像位置关系没有改变。卷积层利用卷积核对图像进行卷积运算;每个卷积核都是可训练的,一般会在卷积核上添加一个偏置参数。卷积运算是卷积核以步长stride在原图上进行移动,将其与卷积核进行元素乘法,并求和乘法结果,最后加上偏置,得到卷积结果。

    池化层:池化层一般不同训练,它的主要作用是减少数据,在降低数据维度的同时保留特征图中重要的特征信息;同时也避免了网络参数太多而造成的过拟合问题。

    全连接层:全连接层一般接在卷积神经网络的最后,用于提取卷积和池化之后的特征向量;并基于提取的特征向量进行图像分类。所以全连接层即充当了特征提取器,又充当了分类器的角色。

    二、回顾LeNet

    LeNet是卷积神经网络的开山之作,也是将深度学习推向繁荣的一座里程碑。LeNet是一种经典的图像分类深度学习卷积神经网络,已有大量的文献综述讨论。其中大家最熟悉的LeNet-5,这个是n多年前就有的一个CNN的经典结构,主要是用于手写字体的识别,也是刚入门需要学习熟悉的一个网络。Yann LeCun于上世纪90年代提出了LeNet,他首次采用了卷积层、池化层这两个全新的神经网络组件;LeNet在手写字符识别任务上取得了瞩目的准确率。

    在详细描述LeNet-5之前,我们回顾发展过程一些网络架构:

    1.Baseline Linear Classifier

    2.One-Hidden-Layer Fully Connected Multilayer NN

    3.Two-Hidden-Layer Fully Connected Multilayer NN

    4.LeNet-1

    5.LeNet-4

    6.LeNet-5

    7.Boosted LeNet-4

    前面有章节解释了深度学习组件的基本知识,如卷积层、池化层、全连接层、激活函数等。不懂可以点下面链接看一下再回来
    CNN架构

    1.Baseline Linear Classifier

    在这里插入图片描述

    最简单的线性分类器。每个输入像素值构成每个输出单元的加权和。总和最高的输出单元表示输入字符的类别。因此,我们可以看到,图像被视为一维向量,并连接到一个10输出的向量。也就是说,测试数据的错误率为8.4%。

    2.One-Hidden-Layer Fully Connected Multilayer NN
    在这里插入图片描述
    输入层和输出层之间增加隐含层,隐含层神经元数量为300个,即20×20 -300 - 10网络,测试数据的错误率为3.6%。隐含层有1000个神经元,即20×20 - 1000 - 10网络,测试数据的错误率为3.8%。

    3.Two-Hidden-Layer Fully Connected Multilayer NN

    在这里插入图片描述
    在输入层和输出层之间增加两个隐藏层,28×28 - 300 - 100-10网络的,测试数据的错误率为3.05%。 28×28 - 1000 - 150 - 10网络,测试数据错误率为2.95%。我们可以看到,通过添加隐藏层,错误率越来越小。但是,这种改善也在变得缓慢。

    4.LeNet-1
    在这里插入图片描述
    在Lenet-1中, 28x28 的输入图像 – 4个24×24 feature maps卷积层(5×5 size) – 平均池化层(2×2大小) – 8个12×12 feature maps 卷积层(5×5 size)-- 平均池化层(2×2大小)-- 直接全连接后输出。引入卷积和下采样/池化层后,LeNet-1对测试数据的错误率为1.7%值得注意的是,在作者发明LeNet时,他们使用平均池化层,输出2×2特征图的平均值。目前很多LeNet实现使用max pooling只输出2×2 feature map的最大值,这有助于加快训练速度。当选择最强的特征时,反向传播可以得到较大的梯度。

    5.LeNet-4
    在这里插入图片描述
    在 Lenet-4 中, 32×32 输入图片 – 4个 28×28 feature maps 卷积层 (5×5 size) – Average Pooling layers (2×2 size) > 6个 10×10 feature maps卷积层r (5×5 size) – Average Pooling layers (2×2 size) – 全连接到 120个神经元 – 全连接到 10 输出有了更多的特征图和一个更完整的连接层,测试数据的错误率为1.1%。

    6.Boosted LeNet-4
    在这里插入图片描述
    Boosting是一种将几个或多个弱分类器的结果进行组合以获得更精确结果的技术。在LeNet-4中,将三个LeNet-4的输出简单相加,其中值最大的就是预测的分类类。当第一个网有一个很高的置信度答案,将会提升,其他网络不会被调用。使用boosting,测试数据的错误率为0.7%,甚至比LeNet-5的错误率还要低。这种boosting 技术已经使用了很多年,直到现在。

    7.LeNet-5详细
    在这里插入图片描述
    LeNet-5是最受欢迎的LeNet-5,与LeNet-4相比只有细微差别,32x32的输入图像 – 6个28×28 feature maps 卷积层(5×5 size) --平均池化层(2×2大小)-- 16个10×10 feature maps 卷积层(5×5 size) – 平均池化层(2×2大小)-- 全连接到120个神经元 --全连接84个神经元 – 全连接到10个输出。有了更多的feature map和多一个全连接层,测试数据的错误率为0.95%。

    三、补充

    激活函数:Tanh 用作激活函数,但输出部分除外。 Sigmoid作为在输出端的激活函数。 ReLU在那些年没有使用。现在,ReLU是一个在训练过程中加速收敛的较好的激活函数。

    池化层:LeNet使用平均池化而不是最大池化。现在最大池化非常常见,甚至没有池化层。

    隐藏层:在过去,隐藏层的数量很少,性能不可能通过增加更多的层来提高太多。现在它可以是成百上千的隐藏层。

    训练时间:在过去,训练需要几天时间。但现在,它只是一个小的网络GPU加速。

  • 相关阅读:
    Mysql中自增主键是如何工作的
    Git命令图解
    【云原生之Docker实战】使用Docker部署calibre-web个人图书管理平台
    【TES720D-KIT】基于复旦微FMQL20S400全国产化ARM开发套件(核心板+底板)
    MYSQL的下载与配置 mysql远程操控
    机器学习笔记之高斯分布(五)推断任务之边缘概率分布与条件概率分布
    Python | Leetcode Python题解之第150题逆波兰表达式求值
    python进程和线程(05)
    Jenkins部署失败:JDK ‘jdk1.8.0_381‘ not supported to run Maven projects
    Flink SQL - 1.Table API && Sql 入门 Demo
  • 原文地址:https://blog.csdn.net/qq_55433305/article/details/127599789