(一)卷积神经网络模型之——LeNet

news2025/2/24 13:05:41

目录

  • LeNet
  • 模型参数介绍
  • 该网络特点
  • 关于C3与S2之间的连接
  • 关于最后的输出层
  • 子采样
  • 参考

LeNet

LeNet是一个用来识别手写数字的最经典的卷积神经网络,是Yann LeCun在1998年设计并提出的。Lenet的网络结构规模较小,但包含了卷积层、池化层、全连接层,他们都构成了现代CNN的基本组件。

网络模型结构图:
在这里插入图片描述
网络模型结构参数设计图:
在这里插入图片描述

模型参数介绍

LeNet-5 共5层:卷积层C1、C3、C5、全连接层 F6、输出层

输入:3232=1024的手写字体图片,相当于1024个神经元。这些手写字体包含0~9数字,也就是相当于10个类别的图片。3232的图像这要比Mnist数据库(caffe中的输入尺寸为28*28)中最大的字母还大。这样做的原因是希望潜在的明显特征,比如笔画断续、角点能够出现在最高层特征监测子感受野的中心。

C1层:卷积层使用6个特征卷积核,卷积核大小55,步长为1,无padding,这样我们可以得到6个特征图,然后每个特征图的大小为2828,也就是神经元的个数为62828=784。(32-5+1=28)

注:C1有156个可训练参数(每个滤波器55=25个unit参数和一个bias参数,一共6个滤波器,共(55+1)6=156个参数),共156(2828)=122,304个连接。

此处为什么要进行卷积?
卷积运算一个重要的特点就是:通过卷积运算,可以使原信号特征增强,并且降低噪音,同时不同的卷积层可以提取到图像中的不同特征,这层卷积我们就是用了6个卷积核。

S2层:MaxPooling下采样层,也就是使用最大池化进行下采样,池化的滤波器大小f选择(2,2),步长stride为2。这样我们可以得到输出大小为61414.

说明下为什么要进行下采样?
利用图像局部相关性的原理,对图像进行子抽样,可以减少数据处理量同时保留有用信息,从而降低了网络训练的参数和模型的过拟合程度

C3层:卷积层,卷积核大小55,步长为1,无padding,据此我们可以得到新的图片大小为1010,此处采用16个卷积核,所以最终输出161010。

S4层:MaxPooling下采样层,对C3的16张1010的图片进行最大池化,池化的滤波器大小f选择(2,2),步长stride为2。因此最后S4层为16张大小为55的图片。至此我们的神经元个数已经减少为:1655=400。

特征图中的每个单元与C3中相应特征图的22邻域相连接,跟C1和S2之间的连接一样。S4层有32(216)个可训练参数(每个特征图1个因子和一个偏置)和2000个连接。

C5层:将S4层的输出平铺为一个400的一维向量。然后用这400个神经元构建下一层,C5层有120个神经元。S4层的400个神经元与C5层的每一个神经元相连(C5层有120个神经元),这就是全连接层。C5层有48120个可训练连接((5516+1)*120)。

F6层:对C5层的120个神经元再添加一个全连接层,F6层含有84个神经元,之所以选这个数字的原因来自于输出层的设计。该层有10164个可训练参数((11120+1)*84=10164

输出:最后将F6层的84个神经元填充到一个SoftMax函数,得到输出长度为10的张量,张量中为1的位置代表所属类别。(例如[0,0,0,1,0,0,0,0,0,0]的张量,1在index=3的位置,故该张量代表的图片属于第三类)。

因此模型结构总体是由以下结构组成:输入->卷积->池化->卷积->池化->卷积->全链接->全链接(输出)

该网络特点

1)激活函数使用tanh

2)卷积核5x5,步长1,未使用padding

3)池化层使用最大池化MaxPooling

关于C3与S2之间的连接

C3中的每个特征图是连接到S2中的所有6个或者几个特征map的,表示本层的特征图是上一层提取到的特征map的不同组合。

这里是组合,就像人的视觉系统一样,底层的结构构成上层更抽象的结构,例如边缘构成形状或者目标的部分。

在Yann的论文中说明了C3中每个特征图与S2中哪些特征图相连,连接情况如下表所示:
在这里插入图片描述

由上表可以发现C3的前6个特征图以S2中3个相邻的特征图为输入。接下来6个特征图以S2中4个相邻特征图为输入,下面的3个特征图以不相邻的4个特征图为输入。最后一个特征图以S2中所有特征图为输入。

这样C3层有1516个可训练参数((253+1)6+(254+1)9+(256+1)=1516)和151600(151610*10)个连接。

那么为什么不把S2中的每个特征图连接到每个C3的特征图呢?

原因有两个:

第一,不完全的连接机制将连接的数量保持在合理的范围内。

第二,也是最重要的,其破坏了网络的对称性。由于不同的特征图有不同的输入,所以迫使他们抽取不同的特征(希望是互补的)。

关于最后的输出层

输出层由欧式径向基函数(Euclidean Radial Basis Function)单元组成,每类一个单元,每个有84个输入。

换句话说,每个输出RBF单元计算输入向量和参数向量之间的欧式距离。输入离参数向量越远,RBF输出的越大。一个RBF输出可以被理解为衡量输入模式和与RBF相关联类的一个模型的匹配程度的惩罚项。

用概率术语来说,RBF输出可以被理解为F6层配置空间的高斯分布的负log-likelihood。给定一个输入模式,损失函数应能使得F6的配置与RBF参数向量(即模式的期望分类)足够接近。这些单元的参数是人工选取并保持固定的(至少初始时候如此)。

这些参数向量的成分被设为-1或1。虽然这些参数可以以-1和1等概率的方式任选,或者构成一个纠错码,但是被设计成一个相应字符类的7*12大小(即84)的格式化图片。这种表示对识别单独的数字不是很有用,但是对识别可打印ASCII集中的字符串很有用。

使用这种分布编码而非更常用的“1 of N”编码用于产生输出的另一个原因是,当类别比较大的时候,非分布编码的效果比较差。

原因是大多数时间非分布编码的输出必须为0。这使得用sigmoid单元很难实现。另一个原因是分类器不仅用于识别字母,也用于拒绝非字母。使用分布编码的RBF更适合该目标。因为与sigmoid不同,他们在输入空间的较好限制的区域内兴奋,而非典型模式更容易落到外边。

RBF参数向量起着F6层目标向量的角色。需要指出这些向量的成分是+1或-1,这正好在F6 sigmoid的范围内,因此可以防止sigmoid函数饱和。实际上,+1和-1是sigmoid函数的最大弯曲的点处。这使得F6单元运行在最大非线性范围内。必须避免sigmoid函数的饱和,因为这将会导致损失函数较慢的收敛和病态问题。

子采样

子采样具体过程如下:

每邻域四个像素求和变为一个像素,然后通过标量Wx+1加权,再增加偏置bx+1,然后通过一个sigmoid激活函数,产生一个大概缩小四倍的特征映射图Sx+1。

在整个网络中,S-层可看作是模糊滤波器,起到二次特征提取的作用。隐层与隐层之间空间分辨率递减,而每层所含的平面数递增,这样可用于检测更多的特征信息。

参考

https://blog.csdn.net/L888666Q/article/details/124490708
http://blog.csdn.net/qiaofangjie/article/details/16826849
https://blog.csdn.net/Chenyukuai6625/article/details/77872489

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/405776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【前端进阶】-TypeScript高级类型 | 泛型约束、泛型接口、泛型工具类型

前言 博主主页👉🏻蜡笔雏田学代码 专栏链接👉🏻【TypeScript专栏】 前两篇文章讲解了TypeScript的一些高级类型 详细内容请阅读如下:🔽 【前端进阶】-TypeScript高级类型 | 交叉类型、索引签名类型、映射类…

直接在前端调用 GPT-3 API

〇、效果展示 一、代码&#xff1a;ask.html app.js ask.html&#xff08;内嵌css&#xff09; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>ChatGPT Web Example</title><style>/* 你的 CSS 代码 */bod…

CSS 轻松实现‘毛玻璃’效果

毛玻璃1. backdrop-filt 属性2. filter 属性3. backdrop-filter && filter4. 参考资料1. backdrop-filt 属性 通过为元素添加backdrop-filter:blur(模糊值) 这个 CSS 属性&#xff0c;元素所在的区域后方包括后方的其他元素会模糊或颜色有所偏移&#xff0c;元素本身包…

深拷贝的五种实现方式

一、什么是深拷贝和浅拷贝 浅拷贝是创建一个新对象&#xff0c;这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型&#xff0c;拷贝的就是基本类型的值&#xff0c;如果属性是引用类型&#xff0c;拷贝的就是指向内存的地址 &#xff0c;所以如果其中一个对象改变…

npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

为了解决npm命令无法正常运行的问题 接上个博客 安装完新版node后使用npm命令会出现以下错误 大致意思就是识别不了npm命令是干啥的 解决方案: 1.首先确定是不是软件没有获得管理员权限运行,右键程序选择管理员权限运行 2.如果管理员权限运行后依然出现错误,检查node的配置…

React 框架

文章目录一、React 框架简介二、配置环境三、组件&#xff08;Component&#xff09;四、Component 组件的组合与交互一、React 框架简介 介绍 CS 与 BS结合&#xff1a;像 React&#xff0c;Vue 此类框架&#xff0c;转移了部分服务器的功能到客户端。将CS 和 BS 加以结合。客…

java简历项目经验案例(java简历项目经验怎么写)

如何描述项目经验-seo简历项目经验怎么&#xff1f;seo简历项目经验怎么写 写自己从事过的什么项目。写具体什么模块。如果没有就写自己能达到什么水平&#xff0c;能做出什么模块。 什么叫项目经验&#xff1f;什么叫项目经验?简历中的项目经验可以写些什么? 项目经验与工作…

flex布局之flex-direction

一、flex布局的原理 1,flex是”flexible Box”的缩写&#xff0c;意为”弹性布局”&#xff1b; 2.当我们为父盒子设为flex布局以后&#xff0c;子元素的float、clear和vertical-align属性将会失效。 言而简之&#xff1a;flex布局原理就是通过给父盒子添加flex属性&#xff0…

VUE项目部署

前端项目的部署 1.1 开发完的vue的项目 首先运行 以下命令 对项目进行打包 npm run build1.2 安装nginx服务器 ​ nginx是一款轻量级的Web服务器、反向代理服务器&#xff0c;由于它的内存占用少&#xff0c;启动极快&#xff0c;高并发能力强&#xff0c;在互联网项目中广泛…

若依RuoYi-Vue前后端项目启动流程

1.git找到RuoYi-Vue RuoYi-Vue: &#x1f389; 基于SpringBoot&#xff0c;Spring Security&#xff0c;JWT&#xff0c;Vue & Element 的前后端分离权限管理系统&#xff0c;同时提供了 Vue3 的版本 2.本地创建文件夹&#xff0c;cmd进入该文件夹下并进行克隆项目 git cl…

webpack安装与使用(详细)

一.什么是webpack? webpack是现代javascript应用程序的静态模块打包器&#xff0c;当 webpack 处理应用程序时&#xff0c;它会递归地构建一个依赖关系图(dependency graph)&#xff0c;其中包含应用程序需要的每个模块&#xff0c;然后将所有这些模块打包成一个或多个 bundl…

蓝桥杯第十四届蓝桥杯模拟赛第三期考场应对攻略(C/C++)

这里把我的想法和思路写出来&#xff0c;恳请批评指正&#xff01; 目录 考前准备 试题1&#xff1a; 试题2&#xff1a; 试题3&#xff1a; 试题4&#xff1a; 试题5&#xff1a; 试题6&#xff1a; 试题7&#xff1a; 试题8&#xff1a; 试题9&#xff1a; 试题1…

Vue开发实例(05)之搭建项目主页面头部、导航、主体等页面布局

作者简介 作者名&#xff1a;编程界明世隐 简介&#xff1a;CSDN博客专家&#xff0c;从事软件开发多年&#xff0c;精通Java、JavaScript&#xff0c;博主也是从零开始一步步把学习成长、深知学习和积累的重要性&#xff0c;喜欢跟广大ADC一起打野升级&#xff0c;欢迎您关注&…

【Node.js实战】一文带你开发博客项目(API 对接 MySQL)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端 &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;秋招&#xff09; &#x1f680;未…

事件循环(Event Loop)

文章目录单线程事件循环机制&#xff08;Event Loop&#xff09;1、同步任务与异步任务同步任务异步任务宏任务微任务2、执行过程3、执行顺序4、举例&#xff1a;实例1实例2单线程 JavaScript是一种单线程的编程语言&#xff0c;同一时间只能做一件事&#xff0c;所有任务都需…

【Node.js实战】一文带你开发博客项目(MySQL基础)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端 &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿 offer&#xff08;秋招&#xff09; &#x1f947;推荐学习&…

简单易懂 关于nextTick()的理解

前言 学习Vue的过程中&#xff0c;大家肯定都使用过nextTick()&#xff0c;关于nextTick()的使用时机&#xff0c;大家肯定都知道&#xff0c;那么它的工作原理是怎样的呢&#xff0c;本文就简单说一下它的nextTick()的工作原理。 nextTick的使用时机 首先记住&#xff1a;n…

vue中 router.beforeEach() 的用法

导航守卫 主要是通过跳转或取消得方式守卫导航 在前端路由跳转中&#xff0c;路由跳转前都是会经过beforeEach&#xff0c;而beforeEach可以通过next来控制到底去哪个路由。根据这个特性我们就可以在beforeEach中设置一些条件来控制路由的重定向。 常见的使用场景有&#xff1…

WordPress 中的常规设置

&#x1f482; 个人网站:【海拥】【摸鱼游戏】【神级源码资源网站】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】&#x1f4ac; 免费且…

CSS实现背景图片模糊——毛玻璃效果 | 浅谈CSS属性 filter、backdrop-filter

&#x1f4ad;&#x1f4ad; ✨&#xff1a; CSS实现背景图片模糊——毛玻璃效果 | 浅谈CSS属性 filter、backdrop-filter   &#x1f49f;&#xff1a;东非不开森的主页   &#x1f49c;: 因为很多东西来不及去做去看可是时间很快总是赶不上&#xff0c;所以要去成长呀&…