深度学习之全面了解网络架构

在这篇文章中,我们将和大家探讨“深度学习中的网络架构”这个主题,解释相关背景知识,并就一些问题进行解答。

我选择的问题反映的是常见用法,而不是学术用例。我将概括介绍该主题,然后探讨以下四个问题:

1. 要进行图像分类,我应该使用哪种架构?

2. 在时序应用中,我能否重用基于图像数据训练的架构?

3. 对于时序回归,我该如何选择合适的方法?

4. 对于小型数据集,我应该使用哪种网络架构?

    ◆  

引言

网络架构定义了深度学习模型的构建方式,更重要的是定义了它的功能。架构会决定:

  • 模型准确度(网络架构是影响准确度的众多因素之一)

  • 模型能预测什么

  • 模型期望的输入和输出

  • 层的组合以及数据如何流经这些层

大部分人会利用已有的成果,从现成的层组合入手开始训练。毕竟初次尝试某件事的话,借鉴前人的工作不失为一个好办法。

相当一段时间以来,深度学习研究人员都在探索不同的网络架构和层组合。得益于他们的工作,我们有了 GoogLeNet、ResNet、SqueezeNet 等各种网络,这些架构都取得了很好的效果。

刚起步时,您可以选择一个解决类似问题的已有架构,在它的基础上进行构建,而无需从头开始。

在选择网络架构之前,务必了解您的用例类型以及可用的常见网络。

    ◆  

开始接触深度学习时,您可能会遇到以下常见架构:

  • 卷积神经网络 (CNN):

CNN 通常用来处理图像输入数据,但也可以用于其他输入数据,我将在问题 1 中详细说明。

  • 循环神经网络 (RNN):

RNN 包含连接,可跟踪先前信息以进行未来预测。CNN 假定每个输入是独立事件,而 RNN 则可以处理可能相互影响的数据序列。例如在自然语言处理中,前面的单词会影响后续单词出现的可能性。

  • 长短期记忆 (LSTM) 网络:

LSTM 网络是针对序列和信号数据的常用 RNN。我将在问题 3 中进行详细介绍。

  • 生成式对抗网络 (GAN):

尽管下面的问题不会涉及这类网络,但是 GAN 最近越来越火了。GAN 可以基于现有数据生成新数据(想像一下并非现实真人的人像)。我觉得这挺有意思,而且有点未来感;

那么,接下来就开始回答问题!

    ◆  

Q1

我需要一个图像分类模型。我应该使用哪种架构?

很好的问题。先说结论,您或许可以使用 CNN 进行图像分类。

原因如下。

我们首先谈谈 CNN 和 LSTM 网络分别是什么,以及它们的常见用途。

1) CNN

当谈到卷积神经网络时,有些人会说“ConvNet”,但我总觉得我自己这样说会显得有点装。

CNN 由许多层组成,但形式上遵循一种“卷积 | ReLU | 池化”的模式,这会一再重复、反反复复。

这类网络通常很适合处理图像分类问题,因为它们非常擅长局部空间模式匹配,而且在图像特征提取方面通常也优于其他方法。

别忘了,CNN 的核心是卷积。使用一系列过滤器对输入图像进行卷积可以突出图像中的特征,而不会丢失相邻像素之间的空间关系。

CNN 有很多变体,一些常见配置如下:

串联网络

图片

Alexnet 示例。串联层排列成一直线。

DAG 网络

图片

GoogLeNet 示例。多线多连接是 DAG 的典型特征。

2) LSTM

长短期记忆网络主要用于时序和序列数据。LSTM 网络会记住决策之前的部分数据,从而利用数据的上下文更好地作出关联。

根据经验,时序数据通常最适合用 LSTM 网络处理,而图像数据适合用 CNN。信号数据则是一个与经验部分吻合的例外。CNN 和 LSTM 网络都可以用来处理信号数据。我写过一篇关于深度学习非图像应用的文章,其中一个示例就是使用 CNN 进行语音识别。

下图是一个用于分类的简单 LSTM 网络架构:

图片

下图是一个用于回归的简单 LSTM 网络架构:

图片

Q2

在时序应用中,我能否重用基于图像数据训练的架构?

可以!

您需要将输出层从 classificationOutputLayer 更改为 regressionOutputLayer,可以跟随这个简单的文档示例进行操作:将分类网络转换为回归网络

图片

Q3

实现时序回归的选择太多!我该如何选择合适的架构?

我的第一反应肯定是建议您采用 LSTM 网络!

但是,其他方法的存在必然有其意义,事实上,某些方法在特定场景下表现会更好。

如果没有更多背景信息,我就很难具体回答这个问题,因此让我们逐一分析几种可能的场景。

1) 时序回归场景 #1:

我的输入是低复杂度的时序数据。我想使用一系列数据点来预测未来的事件。

这种情况最好使用机器学习。

2) 时序回归场景 #2:

我想使用来自多个传感器的数据预测机器剩余使用寿命(即机器在不得不维修或更换之前可以使用的时间)。

这个问题来自我们在工业自动化领域的客户,他们需要赶在问题变得危险或处理代价高昂之前先找出问题。

对于这个场景,最好选择 LSTM 网络而不是机器学习回归。这种方法不要求手动识别特征,毕竟在多传感器的情况下,手动识别特征会是相当艰巨的任务。

3) 时序回归场景 #3:

我想要对音频数据进行去噪。

这里可以使用 CNN。这种方法的重点在于,在将信号传送到网络之前,先要将信号转换成图像。也就是说,您需要通过傅里叶变换或其他时频操作,将信号转换为图像表示。

借助图像,您可以看到原始信号中难以可视化的特征。这里可以使用为图像任务设计的预训练网络,因为傅里叶变换本质上是图像。

这个示例演示了如何使用 CNN 对语音进行去噪对于场景 3,我还要补充一点:如果要从时序数据中提取信息并将其用作 CNN 输入,小波也是一种比较主流的方法。

图片

图片

Q4

我想构建一个用来识别图像的分类器,但是我的数据集有限。有没有一种网络架构可以更好地处理小型数据集?

网络架构和预训练网络是密切相关的。预训练模型是经过训练的神经网络。网络的权重和偏置会根据输入数据进行调整,因此面对新任务时,可以较快地重新训练网络。此过程称为迁移学习,有时所需的图像会比较少,适用于小型数据集。另一个可以考虑的方法是通过模拟或数据增强“创造”更多数据。

为帮助您进一步了解各种网络架构的适用场景,我们汇总了一些提示和窍门,其中还包括有关预训练网络的信息

图片

对于这个问题,我认为无论数据集大小如何,您都可以使用任何您认为合适的网络,但可以考虑使用预训练网络来减少所需的输入数据量,或考虑采用一些方法来增强数据集。

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

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

相关文章

Java的I/O演进之路

文章目录 通信技术整体解决的问题1 I/O 模型基本说明2 I/O模型Java BIOJava NIOJava AIO 3 BIO、NIO、AIO 适用场景分析 通信技术整体解决的问题 局域网内的通信要求。多系统间的底层消息传递机制。高并发下,大数据量的通信场景需要。游戏行业。无论是手游服务端&a…

区块链的可拓展性研究【04】分片

分片属于layer1扩容 区块链分片是一种技术实现,可以将区块链网络分成多个片段,每个片段负责处理一部分的交易数据。这种方法可以提高区块链网络的处理速度和吞吐量,降低交易确认时间和费用,同时也可以减轻节点运行负担。 在传统…

【出现模块node_modules里面包找不到】

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 一、出现的问题二、解决办法三、其它可供参考 一、出现的问题 在本地运行 npm run docs:dev之后,出现 Error [ERR_MODULE_NOT_FOUND]: Cannot find package Z:\Blog\docs\node_modules\htmlparser2\ imported from Z:\Blo…

微信小程序base64与十六进制相互转换(使用btoa、atob方法报undefined)

前言:搜到很多方法都用到了btoa()、atob(),这两个属于Window 对象,在浏览器端可以直接使用,但是在小程序里面使用会报undefined。看到uniapp和微信小程序官方文档都提供了下面两个api,就想着经过ArrayBuffer 对象转换一…

入门Redis学习总结

记录之前刚学习Redis 的笔记, 主要包括Redis的基本数据结构、Redis 发布订阅机制、Redis 事务、Redis 服务器相关及采用Spring Boot 集成Redis 实现增删改查基本功能 一:常用命令及数据结构 1.Redis 键(key) # 设置key和value 127.0.0.1:6379> set …

解释AI决策,这10个强大的 Python 库记得收藏!

本文整理了10个常用于可解释AI的Python库,方便我们更好的理解AI模型的决策。 什么是XAI? XAI(Explainable AI)的目标是为模型的行为和决策提供合理的解释,这有助于增加信任、提供问责制和模型决策的透明度。XAI 不仅…

《深入浅出进阶篇》洛谷P3197 越狱——集合

洛谷P3197 越狱 题目大意: 监狱有 n 个房间,每个房间关押一个犯人,有 m 种宗教,每个犯人会信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱。 答案对100,003 取模。…

Temu卖家如何获取流量?Temu新手卖家流量来源哪里?——站斧浏览器

流量对于每个平台来说都是很重要的,那么Temu卖家如何获取流量?流量来源哪里? Temu卖家如何获取流量? 1、优化产品标题和描述:在Temu平台上,买家通常通过搜索关键词来寻找他们感兴趣的产品。因此&#xff…

【数电笔记】58-同步D触发器

目录 说明: 1. 电路组成 2. 逻辑功能 3. 特性表、特性方程 4. 状态转移图 例题 5. 同步D触发器的特点 6. 集成同步D触发器:74LS375 74LS375内部原理 说明: 笔记配套视频来源:B站本系列笔记并未记录所有章节,…

服务器部署网易开源TTS | EmotiVoice部署教程

一、环境 ubuntu 20.04 python 3.8 cuda 11.8二、部署 1、docker方式部署 1.1、安装docker 如何安装docker,可以参考这篇文章 1.2、拉取镜像 docker run -dp 127.0.0.1:8501:8501 syq163/emoti-voice:latest2、完整安装 安装python依赖 conda create -n Emo…

Web 开发的 20 个实用网站

Web 开发的 20 个实用网站 作为一名前端开发工程师,我们一定使用过很多工具来提高自己的工作效率。它们可以是网站、文档或 JavaScript 库。 本文将分享30个有趣的网站。 JavaScript正则表达式可视化工具 https://jex.im/regulex/#!flags&re%5E(a%7Cb)*%3F%…

Centos7及Ubuntu系统安装指定版本dockerdocker-compose安装

Centos7系统 docker指定版本安装【官方文档步骤】 官方文档地址:https://docs.docker.com/engine/install/centos/ # 1.安装yum工具及设置docker-ce镜像库 sudo yum install -y yum-utils# 国外的镜像下载太慢了改成阿里云镜像库 sudo yum-config-manager --add-rep…

★102. 二叉树的层序遍历

102. 二叉树的层序遍历 很巧妙的,又学习了一种层次遍历的方法,就是说根据当前的队列的长度去遍历,遍历的当前队列的长度就是该层次的节点个数。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* Tr…

AIGC专题报告:AIGC助力大规模对象存储服务OSS的能效提升

今天分享的AIGC系列深度研究报告:《AIGC专题报告:AIGC助力大规模对象存储服务OSS的能效提升》。 (报告出品方:全球软件开发大会) 报告共计:18页 结合AI的智能运维助力能效提升 场景1:通过 AI…

SpringMVC-Servlet

依赖 <dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version> </dependency>web.xml 4.0版本 <?xml version"1.0" encoding"UTF-8"?> <…

Python 网络爬虫(三):XPath 基础知识

《Python入门核心技术》专栏总目录・点这里 文章目录 1. XPath简介2. XPath语法2.1 选择节点2.2 路径分隔符2.3 谓语2.4 节点关系2.5 运算符3. 节点3.1 元素节点(Element Node)3.2 属性节点(Attribute Node)

前端vue3——实现二次元人物拼图校验

文章目录 ⭐前言⭐vue3拖拽实现拼图&#x1f496; 思路分解&#x1f496; 布局结构&#x1f496; 拖拽函数&#x1f496; 校验函数&#x1f496; inscode整体代码 ⭐运行效果&#x1f496; 随机顺序&#x1f496; 拖拽中&#x1f496; 校验失败&#x1f496; 校验通过 ⭐总结⭐…

IDEA中.java .class .jar的含义与联系

当使用IntelliJ IDEA这样的集成开发环境进行Java编程时&#xff0c;通常涉及.java源代码文件、.class编译后的字节码文件以及.jar可执行的Java存档文件。 1. .java 文件&#xff1a; 1.这些文件包含了Java源代码&#xff0c;以文本形式编写。它们通常位于项目中的源代码目录中…

苍穹外卖项目笔记(8)— 缓存商品、购物车功能

前言 代码链接&#xff1a; Echo0701/take-out⁤ (github.com) 1 缓存菜品 1.1 问题说明 【注】很多时候系统性能的瓶颈就在于数据库这端 1.2 实现思路 通过 Redis 来缓存数据&#xff0c;减少数据库查询操作 【注】Redis 基于内存来保存数据的&#xff0c;访问 Redis 数据…

LeetCode208.实现Trie(前缀树)

我一开始想题目叫前缀树&#xff0c;是要用树吗&#xff1f;但是不知道用树怎么写&#xff0c;然后我就花了10多分钟&#xff0c;用了HashMap解了。map的key是word&#xff0c;value是一个放了word的所有前缀的set&#xff0c;这样search方法就非常简单了&#xff0c;只要看has…