| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【Pytorch神经网络理论篇】 48 图片分类模型:ResNet模型+DenseNet模型+EffcientNet模型 -> 正文阅读 |
|
[人工智能]【Pytorch神经网络理论篇】 48 图片分类模型:ResNet模型+DenseNet模型+EffcientNet模型 |
? 1 ResNet模型?在深度学习领域中,模型越深意味着拟合能力越强,出现过拟合问题是正常的,训练误差越来越大却是不正常的。 1.1 训练误差越来越大的原因在反向传播中,每一层的梯度都是在上一层的基础上计算的。随着层数越来越多,梯度在多层传播时会越来越小,直到梯度消失,于是随着层数越来越多,训练误差会越来越大。 ResNet模型的动机是要解决网络层次比较深时无法训练的问题,借鉴了高速网络模型的思想,设计出了一个残差连接模块。这种模块可以让模型的深度达到152层。 1.2 残差连接的结构在标准的前馈卷积神经网络上,加一个直接连接,绕过中间层的连接方式,使得输入可以直达输出。 1.2.1 残差连接的结构图1.2.2 残差连接的定义描述?1.3? 残差连接的原理残差连接通过将原始的输入绕过中间的变化直接传给Addiion,在反向传播的过程中,误差传到输入层时会得到两个误差的加和,一个是左侧的多层网络误差,一个是右侧的原始误差。左侧会随着层数变多而梯度越来越小,右侧则是由Addition直接连到输入层,所以还会保留Addition的梯度。这样输入层得到的加和后的梯度就没有那么小了,可以保证接着将误差往下传。 1.3.1?残差连接的原理这种方式看似解决了梯度越传越小的问题,但是残差连接在正向同样也起到作用。 由于正向的作用,网络结构是并行的模型,即残差连接的作用是将网络串行改成并行。 这就是lnception V4模型结合残差网络的原理,没有使用残差连接,反而实现了与Inception-ResNet V2模型等同的效果的原因。 2 DenSeNet模型DenseNet模型于2017年被提出,该模型是密集连接的卷积神经网络CNN,每个网络层都会接受前面所有层作为其输入,也就是说网络每一层的输入都是前面所有层输出的并集。 2.1?DenSeNet模型的网络结构2.1.1?DenSeNet模型每一个特征图都与前面所有层的特征图相连,即每一层都会接受前面所有层作为其输入。对于一个L层的网络,DenseNet模型共包含L(L+1)2个连接。 2.1.2??DenSeNet模型图2.2?DenseNet模型的优势
2.3?DenseNet模型的缺陷DenseNet模型可能耗费很多GPU显存,一般显卡无法存放更深的DenseNet模型,需要经过精心优化。 2.4 稠密快稠密块是DenseNet模型中的特有结构。 2.4.1?稠密块的组成稠密块中含有两个卷积层,这两个卷积层的卷积核尺寸各不相同(分别为1×1和3×3)。每一个稠密块由L个全连接层组成。 全连接仅在一个稠密块中,不同稠密块之间是没有全连接的,即全连接只发生在稠密块中。 3 EffcientNet模型MnasNet模型是谷歌团队提出的一种资源约束的终端CNN模型的自动神经结构搜索方法。该方法使用强化学习的思路进行实现。 3.1?EffcientNet模型的步骤1、使用强化学习算法实现的MnasNet模型生成基准模型EfficientNet-B0。 3.2 EffcientNet模型的调参示意图
3.3 EfficientNet模型的效果在ImageNet数据集上Top-1准确率达到84.4%,Top-5准确率达到97.1%,但是其大小仅仅为已知最好深度卷积模型的1/8.4,而且速度比已知最好深度卷积模型快6.1倍。 EfcientNet模型满足了在不降低模型准确率的条件下,减少模型的计算量或内存需求(参见arXⅳ网站上编号为“1905.11946”的论文)。 3.4?MBConv卷积块EficientNet模型的内部是通过多个MBConv卷积块实现。 3.4.1?MBConv卷积块特点MBConv卷积块使用类似残差连接的结构,不同的是在短连接部分使用了SE模块,并且将常用的ReLU激活函数换成了Swish激活函数,还使用DropConnect层来代替传统的Dropout层。 3.4.2 MBConv卷积块的结构3.4.3? Tip在SE模块中没有使用BN操作,而且其中的Sigmoid激活函数也没有被Swish激活函数替换。 3.5?DropConnect在深度神经网络中,DropConnect层与Dropout层的作用都是防止模型产生过拟合的情况。DropConnect层的效果会更好一些。 3.5.1?DropConnect层与Dropout层对比DropConnect层:在训练神经网络模型的过程中,对隐藏层节点的输入进行随机的丢弃。 Dropout层:在训练神经网络模型的过程中,对隐藏层节点的输出进行随机的丢弃 3.5.2??DropConnect层与Dropout层结构图? ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 11:35:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |