LeNet5的深入解析

2023-11-16

论文:Gradient-based-learning-applied-to-document-recognition

参考:http://blog.csdn.net/strint/article/details/44163869

LeNet5 这个网络虽然很小,但是它包含了深度学习的基本模块:卷积层,池化层,全链接层。是其他深度学习模型的基础,
这里我们对LeNet5进行深入分析,并由此看看 Caffe 中如何实现 LeNet5 的训练和测试。

下面首先上图,卷积网络的经典结构图 LeNet5

这里写图片描述
上图是 LeNet5整个网络结构体

上面的 LeNet5 网络:

输入: 首先 是 数据输入 INPUT 输入图像的尺寸归一化为32*32

C1层: 对输入图像进行第一次卷积运算(使用 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个参数,主要是通过权值共享实现的。

这里写图片描述
上图表示CNN中卷积操作。对卷积的要点解释:
(1)红色框内为2*2卷积核。
(2)蓝色框内为3*4的输入图像。
(3)绿色框为3*3的特征图。
注意:绿框中未包含偏置项。如加入偏置项则每个输出多加上同一个偏置B,此时类似如:aw+bx+ey+fz+B bw+cx+fy+gz+B等。所谓的权值共享是每个卷积运算使用同一个卷积核,在上图中使用的是同一个卷积核,即共享权值。

卷积的优势:
(1) sparse interactions (2) parameter sharing (3) equivariant respections
sparse interactions:
下图是效果图。蓝色框中是全连接神经网络,红色框是卷积网络。

这里写图片描述
卷积相对于全连接是稀疏的。优势:1、参数更少 2、计算量降低。那么会不会导致提取的特征丢失了?
这里写图片描述
上图是多层结构的联系图,所以可以通过增加网络层数,保留全局的特征。

parameter sharing: 在上面已经分析完毕。优势:同样是减少了参数量。

equivariant respections: 当输入图像通过平移后,卷积的结果也会平移。

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

C3层: 第一次池化之后是第二次卷积,第二次卷积的输出是C3,16个10x10的特征图,卷积核大小是 5*5. 我们知道S2 有6个 14*14 的特征图,怎么从6 个特征图得到 16个特征图了? 这里是通过对S2 的特征图特殊组合计算得到的16个特征图。具体如下:
这里写图片描述
前6个feature map(对应上图第一个红框的6列)与S2层相连的3个feature map相连接(上图第一个红框),后面6个feature map与S2层相连的4个feature map相连接(上图第二个红框),,后面3个feature map与S2层部分不相连的4个feature map相连接,最后一个与S2层的所有feature map相连。卷积核大小依然为5*5,所以总共有6*(3*5*5+1)+6*(4*5*5+1)+3*(4*5*5+1)+1*(6*5*5+1)=1516个参数。而图像大小为10*10,所以共有151600个连接。
C3与S2中前3个图相连的卷积结构如下图所示:
这里写图片描述
上图对应的参数为 3*5*5+1,一共进行6次卷积得到6个特征图,所以有6*(3*5*5+1)参数。
为什么采用上述这样的组合了?论文中说有两个原因:1)减少参数,2)这种不对称的组合连接的方式有利于提取多种组合特征。

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

C5层: C5层是一个卷积层。由于S4层的16个图的大小为5x5,与卷积核的大小相同,所以卷积后形成的图的大小为1x1。这里形成120个卷积结果。每个都与上一层的16个图相连。所以共有(5x5x16+1)x120 = 48120个参数,同样有48120个连接。C5层的网络结构如下:
这里写图片描述

F6层: F6层是全连接层。F6层有84个节点,对应于一个7x12的比特图,-1表示白色,1表示黑色,这样每个符号的比特图的黑白色就对应于一个编码。该层的训练参数和连接数是(120 + 1)x84=10164。ASCII编码图如下:
这里写图片描述

F6层的连接方式如下:
这里写图片描述

Output层:Output层也是全连接层,共有10个节点,分别代表数字0到9,且如果节点i的值为0,则网络识别的结果是数字i。采用的是径向基函数(RBF)的网络连接方式。假设x是上一层的输入,y是RBF的输出,则RBF输出的计算方式是:
这里写图片描述
上式w_ij 的值由i的比特图编码确定,i从0到9,j取值从0到7*12-1。RBF输出的值越接近于0,则越接近于i,即越接近于i的ASCII编码图,表示当前网络输入的识别结果是字符i。该层有84x10=840个参数和连接。

这里写图片描述
上图LeNet-5识别数字3的过程

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeNet5的深入解析 的相关文章

  • R 修改安装包默认存放位置的方法

    目录 R语言修改安装包的默认储存位置 查看默认的安装包位置 第一种方法会修改当前用户的R包位置 第二种方法 永久改变 永久有效 第三种方法 修改环境变量 总结 R语言修改安装包的默认储存位置 查看默认的安装包位置 一般会有两个目录 如下 第
  • 计算机操作系统-进程篇

    一 进程 进程 progress 是指计算机中已运行的程序 每个进程都有自己的地址空间 内存 寄存器和堆栈等资源 它们与其他进程相互隔离 互不干扰 进程是操作系统中最基本的资源分配单位 也是操作系统中最重要的概念之一 在操作系统中 进程是由
  • 动态规划:样例讲解一篇通

    概念讲解 动态规划是把大问题分解成子问题 但不能简单的分解 子问题要具有相同子结构的解 并综合子问题的解 导出大问题的解 问题求解耗时会按问题规模呈幂级数增加 基本方法 为了节约重复求相同子问题的时间 引入一个数组 不管它们是否对最终解有用
  • 运行jar包提示 “XXX中没有主清单属性” “找不到主类”两种解决办法

    运行jar包提示 XXX中没有主清单属性 找不到主类 两种解决办法 这种情况一般都是使用maven打成jar包后运行出现的 这种情况是因为jar包里面没有主类路径 解决办法有两个 1 使用IDEA自带的构建jar包流程 不使用Maven打包
  • GPS开源项目

    GPS数据解析开源项目 测试数据 GNRMC 013300 00 A 2240 84105 N 11402 70763 E 0 007 220319 D 69 r n GNVTG T M 0 007 N 0 014 K D 3A r n G
  • C++多态虚函数表详解(多重继承、多继承情况)

    本文关键词 C 多态 多继承 多重继承 虚函数表 虚函数指针 动态绑定 概述 C 相对其他面向对象语言来说 之所以灵活 高效 很大程度的占比在于其多态技术和模板技术 C 虚函数表是支撑C 多态的重要技术 它是C 动态绑定技术的核心 本文章将
  • mavonEditor中的图片上传与删除(前后端交互)

    我设置的存储图片服务器的地址 D Program Files apache tomcat 9 0 43 webapps ROOT newsimg 1 图片上传 1 1 前端 文本上传图片事件处理函数 imgAdd pos file var
  • 一文带你层层解锁「文件下载」的奥秘

    大家好我是秋风 今天带来的主题是关于文件下载 在我之前曾经发过一篇文件上传的文章 一文了解文件上传全过程 1 8w字深度解析 进阶必备 200 点赞 反响还不错 时隔多日 由于最近有研究一些媒体相关的工作 因此打算对下载做一个整理 因此他的
  • Java 将前端传来的数字转化为日期

    由于不知名的原因 前端传来的日期数据被转换成了一串数字 导致入库失败 现需将数字转换为日期格式 代码如下 public class DateTest public static void main String args throws Pa
  • Linux touch 命令指南大全

    1 概述 在本教程中 我们将学习touch命令 简而言之 这个命令允许我们更新文件或目录的最后修改时间和最后访问时间 因此 我们将重点关注如何使用该命令及其各种选项 请注意 我们使用 Bash 测试了此处显示的所有命令 但是 它们应该与任何
  • 手把手教你二进制安装生产环境 K8s 多 master 节点高可用集群详细图文教程

    目录 一 集群环境准备 1 1 kubeadm 和二进制安装 k8s 适用场景分析 1 2 多 master 节点高可用架构图 二 基础环境配置 以下操作所有节点都得执 2 1 初步的环境初始化 2 2 关闭交换分区 swap 提升性能 2
  • Error:Abnormal build process termination: E:\myeclipse\jdk8\jdk\bin\java -Xmx700m -Djava.awt.headle

    解决办法 关闭电脑上面的防火墙就好了
  • Koin--适用于Kotlin的超好用依赖注入框架,Dagger替代者,Koin史上最详细解说,一篇就够了,妈妈再也不用担心我不会依赖注入了

    今年呆在家中实在无聊 外面太危险了 还是在家学习比较安全可持续 过年期间 我又复习了几遍依赖注入框架Dagger 诶 什么是依赖注入 说白了就是降低跟类对象之间的耦合 当需要修改类对象的时候 能不修改被依赖的实例 其实我们平常就用到了很多的
  • Flask的使用

    1 创建项目 利用python的包安装工具pip下载wheel pip3 install flask 查看当前项目的环境 pip3 list 1 2 项目构造 static templates app py mtv model templa
  • 网络中,ping命令还能这样玩

    在网络中 ping 是一个十分强大的 TCP IP 工具 它的作用主要为 1 用来检测网络的连通情况和分析网络速度 2 根据域名得到服务器 IP 3 根据 ping 返回的 TTL 值来判断对方所使用的操作系统及数据包经过路由器数量 一般情
  • Linux:PXE批量网络装机及kickstart无人值守安装

    目录 一 pxe简介 二 pxe使用的服务 三 实施过程 四 pxe优点 五 搭建PXE远程安装服务器 六 kickstart无人值守安装 一 pxe简介 PXE 预启动执行环境 是由Inter公司开发的网络引导技术 工作在Client S
  • 集成底座POC方案说明

    企业的信息化建设是伴随企业发展不断延伸 不断升级的过程 而随着信息化体量的不断增大 复杂繁多的业务系统往往又成为信息化建设的瓶颈 而为了消除瓶颈 更便捷的打通系统的关联 针对企业实际业务建立集成底座平台则是非常有效的一种方式 通过集成底座打
  • 【软件开发】MyBatis 理论篇

    MyBatis 理论篇 1 MyBatis 是什么 MyBatis 是一个半 ORM 对象关系映射 框架 它内部封装了 JDBC 开发时只需要关注 SQL 语句本身 不需要花费精力去处理加载驱动 创建连接 创建 statement 等繁杂的
  • 小程序通过子页面选择数据返回父页面更新数据

    问题 这是父页面 首先选择 地址栏默认地址 北京 按钮 进入子页面 这是子页面 这时候点击 其他城市 名称 将 城市 id 和 名称 更新到 父页面 解决方法 var pages getCurrentPages var currPage p

随机推荐

  • Linux小技巧2--git与GitHub学习笔记

    Linux小技巧2 git与GitHub学习笔记 近日学习了git与GitHub 内容是麦子学院老师关于git与GitHub的教程 话不多说先贴在此处以便于自己查看 也便于需要的人学习 后续将逐渐补充一些git常见错误处理相关的知识 1 g
  • 程序员35岁的破局之道

    微信公众号访问地址 程序员35岁的破局之道 近期热推文章 1 springBoot对接kafka 批量 并发 异步获取消息 并动态 批量插入库表 2 SpringBoot用线程池ThreadPoolTaskExecutor异步处理百万级数据
  • 详解java类的生命周期

    引言 最近有位细心的朋友在阅读笔者的文章时 对java类的生命周期问题有一些疑惑 笔者打开百度搜了一下相关的问题 看到网上的资料很少有把这个问题讲明白的 主要是因为目前国内java方面的教材大多只是告诉你 怎样做 但至于 为什么这样做 却不
  • Java如何比较两个日期的先后顺序

    在 Java 中 你可以使用 java util Date 或 java time LocalDate 类来比较两个日期的先后顺序 以下是使用 java util Date 类比较两个日期的先后顺序的示例代码 java import jav
  • 面对kafka频发的rebalance,该如何处理?

    Kafka 是我们最常用的消息队列 它那几万 甚至几十万的处理速度让我们为之欣喜若狂 但是随着使用场景的增加 我们遇到的问题也越来越多 其中一个经常遇到的问题就是 rebalance 重平衡 问题 但是要想了解 rebalance 那就得先
  • java+内存分配及变量存储位置的区别

    Java内存分配与管理是Java的核心技术之一 之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识 今天我们再次深入Java核心 详细介绍一下Java在内存分配方面的知识 一般Java在内存分配时会涉及到以下区域 寄
  • Mysql常用的三种数据库引擎比较

    点击上方蓝字 快速关注 ISAM ISAM是一个定义明确且历经时间考验的数据表格管理方法 它在设计之时就考虑到数据库被查询的次数要远大于更新的次数 因此 ISAM执行读取操作的速度很快 而且不占用大量的内存和存储资源 ISAM的两个主要不足
  • ReplicaSet和ReplicationController区别

    ReplicaSet是新一代的ReplicationController ReplicaSet的pod标签选择器的表达能力更强 例如ReplicaSet能同时匹配两种标签 env dev和env pro ReplicationControl
  • ajax请求二进制数据

    var url var xhr new XMLHttpRequest xhr open GET url true 也可以使用POST方式 根据接口 xhr responseType blob 返回类型blob 定义请求完成的处理函数 请求前
  • 使用不同的渲染

    11
  • ubuntu更新源报错--软件包管理器apt在验证密钥时使用了旧的方式

    目录 一 解决报错一 二 解决报错二 一 解决报错一 1 报错原信息 Key is stored in Legacy trusted gpg keyring etc apt trusted gpg see the DEPRECATION S
  • 如何编辑加密的PDF

    在不知道密码的情况下如何编辑打印pdf呢 1使用WPS打开加密的pdf 2点击打印 神奇的事情 明明没有打印权限 选择打印为PDF 3获得一个新的有权限的PDF
  • vue3项目(六)---detail

    1 详情页 页面准备和路由配置 点击新鲜好物里的商品后 会跳转到详情页 并且会携带参数过去 1 先准备静态页面 在views下新建一个Detail组件 2 配置路由 src router index js import Detail fro
  • Python入门学习(三)核心语法(1)

    3 1Python序列详解 索引和引片 3 1Python序列详解 索引和引片 3 1 1 索引 list1 1 2 3 4 元素值 1 2 3 4 正索引 0 1 2 3 负索引 4 3 2 1 print list的第一个元素是 lis
  • 第一章_RabbitMQ简介

    MQ是什么 MQ Message Quene 翻译为 消息队列 通过典型的 生产者和消费者模型 生产者不断向消息队列中生产消息 消费者不断的从队列中获取消息 因为消息的生产和消费都是异步的 而且只关心消息的发送和接收 没有业务逻辑的侵入 轻
  • 出现找不到msvcp140.dll无法继续执行代码要怎么解决?

    出现找不到msvcp140 dll无法继续执行代码要怎么解决 当你尝试在Windows系统上运行某些程序或游戏时 可能会遇到 找不到msvcp140 dll无法继续执行代码 的错误提示 这个错误通常表示你的系统缺少了msvcp140 dll
  • centos7密码破解

    centos7密码破解 首先准备一台centos7系统 密码知道不知道都可以 1 先打开centos 然后进入选择系统的那一栏 然后点击任意键停住 按住e进入单用户模式 已经进入单用户模式 2 在Linux16最后面加上 目录rd brea
  • python操作Neo4j进行同名实体合并

    python操作Neo4j进行同名实体合并 使用python操作neo4j 3 5 4版本 时 防止已有节点重复创建 使用NodeMatcher函数 from py2neo import Graph Node Relationship No
  • 华为OD机试-计算网络信号

    华为OD机试 计算网络信号 网络信号经过传递会逐层衰减 且遇到阻隔物无法直接穿透 在此情况下需要计算某个位置的网络信号值 注意 网络信号可以绕过阻隔物 array m n 的二维数组代表网格地图 array i j 0代表i行j列是空旷位置
  • LeNet5的深入解析

    论文 Gradient based learning applied to document recognition 参考 http blog csdn net strint article details 44163869 LeNet5