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

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

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

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

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

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

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

图片

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

泽攸科技二维材料转移台的应用场景及优势

随着二维材料的广泛研究和各种潜在应用的开发,对于二维材料样品的精密操控与转移的需求日益增加。特别是一些新型二维材料的制备和器件集成制备中,需要在显微镜下对样品进行观察与定位,并能够在微米甚至纳米量级上精确移動和转移样品。 传统…

做数据分析为何要学统计学(6)——什么问题适合使用方差分析?

方差分析(ANOVA,也称变异数分析)是英国统计学家Fisher(1890.2.17-1962.7.29)提出的对两个或以上样本总体均值进行差异显著性检验的方法。 它的基本思想是将测量数据的总变异(即总方差&#xff…

Go语言初始化数组的六种方式

介绍 在Go语言中,有多种方式可以初始化数组,本文将介绍初始化数组的六种方法。 方式1:指定数组大小并初始化 var array [3]int [3]int{1, 2, 3}指定数组的大小为3,并初始化为指定的值1, 2, 3。 方式2:根据初始化值…

Linux 中用户与权限

目录 1.添加用户 useradd 2.修改用户属性 usermod 3.用户组管理 3.1新建组 3.2 组和用户的关系 3.3 修改组名 3.4 删除组 4.权限管理 4.1.文件类型 4.2 权限 4.3 修改文件权限 1.添加用户 useradd 1)创建用户 useradd 用户名 2)设置用户密码…

Vue3问题:如何在页面上添加水印?

前端功能问题系列文章,点击上方合集↑ 序言 大家好,我是大澈! 本文约3100字,整篇阅读大约需要5分钟。 本文主要内容分三部分,如果您只需要解决问题,请阅读第一、二部分即可。如果您有更多时间&#xff…

【npm | npm常用命令及镜像设置】

npm常用命令及镜像设置 概述常用命令对比本地安装全局安装--save (或 -S)--save-dev (或 -D) 镜像设置设置镜像方法切换回npm官方镜像选择镜像源 主页传送门:📀 传送 概述 npm致力于让 JavaScript 开发变得…

MyBatis进阶之结果集映射注解版

文章目录 注解实现结果集映射注解实现关系映射常用功能注解汇总 注解实现结果集映射 注意 配置结果集映射&#xff0c;只用看 SQL 执行结果&#xff0c;不看 SQL 语句&#xff01; 注意 由于注解在映射结果集上没有实现 <resultMap> 的 100% 功能&#xff0c;因此&#x…

在AWS Lambda上部署标准FFmpeg工具——Docker方案

大纲 1 确定Lambda运行时环境1.1 Lambda系统、镜像、内核版本1.2 运行时1.2.1 Python1.2.2 Java 2 启动EC23 编写调用FFmpeg的代码4 生成docker镜像4.1 安装和启动Docker服务4.2 编写Dockerfile脚本4.3 生成镜像 5 推送镜像5.1 创建存储库5.2 给EC2赋予角色5.2.1 创建策略5.2.2…

Swagger2的使用

手写Api文档的几个痛点&#xff1a; 文档需要更新的时候&#xff0c;需要再次发送一份给前端&#xff0c;也就是文档更新交流不及时。 接口返回结果不明确 不能直接在线测试接口&#xff0c;通常需要使用工具&#xff0c;比如postman 接口文档太多&#xff0c;不好管理 Sw…

kafka学习笔记--生产者消息发送及原理

本文内容来自尚硅谷B站公开教学视频&#xff0c;仅做个人总结、学习、复习使用&#xff0c;任何对此文章的引用&#xff0c;应当说明源出处为尚硅谷&#xff0c;不得用于商业用途。 如有侵权、联系速删 视频教程链接&#xff1a;【尚硅谷】Kafka3.x教程&#xff08;从入门到调优…

HNU计算机视觉作业二

前言 选修的是蔡mj老师的计算机视觉&#xff0c;上课还是不错的&#xff0c;但是OpenCV可能需要自己学才能完整把作业写出来。由于没有认真学&#xff0c;这门课最后混了80多分&#xff0c;所以下面作业解题过程均为自己写的&#xff0c;并不是标准答案&#xff0c;仅供参考 …

【改进YOLOv8】融合可扩张残差(DWR)注意力模块的小麦病害检测系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义&#xff1a; 随着计算机视觉技术的快速发展&#xff0c;深度学习在图像识别和目标检测领域取得了巨大的突破。其中&#xff0c;YOLO&#xff08;You Only Look O…

《opencv实用探索·八》图像模糊之均值滤波、高斯滤波的简单理解

1、前言 什么是噪声&#xff1f; 该像素与周围像素的差别非常大&#xff0c;导致从视觉上就能看出该像素无法与周围像素组成可识别的图像信息&#xff0c;降低了整个图像的质量。这种“格格不入”的像素就被称为图像的噪声。如果图像中的噪声都是随机的纯黑像素或者纯白像素&am…

短剧分销平台搭建:短剧变现新模式

短剧作为今年大热的行业&#xff0c;深受大众追捧&#xff01;短剧剧情紧凑&#xff0c;几乎每一集都有高潮剧情&#xff0c;精准击中了当下网友的碎片化时间。 短剧的形式较为灵活&#xff0c;可以轻松融入各种的元素&#xff0c;比如喜剧、悬疑、爱情等&#xff0c;可以满足…

工业 4.0 | 数字孪生入门指南

工业 4.0 在多年热议后悄然落地&#xff0c;如今&#xff0c;制造、能源和运输企业正在越来越多地从中受益。 仿真未来场景 公司可以使用数字孪生仿真未来场景&#xff0c;以了解天气、车队规模或工况差异等因素对性能的影响。该方法可为维护计划提供决策支撑&#xff0c;并可…

[陇剑杯 2021]简单日志分析

[陇剑杯 2021]简单日志分析 题目做法及思路解析&#xff08;个人分享&#xff09; 问一&#xff1a;某应用程序被攻击&#xff0c;请分析日志后作答&#xff1a; 黑客攻击的参数是______。&#xff08;如有字母请全部使用小写&#xff09;。 题目思路&#xff1a; 分析…

探索Python中封装的概念与实践

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 封装是面向对象编程中的核心概念&#xff0c;它能够帮助程序员隐藏类的内部细节&#xff0c;并限制对类成员的直接访问。本文将深入探讨Python中封装的机制&#xff0c;介绍封装的类型和优势&#xff0c;并提供详…

重写 AppiumService 类,添加默认启动参数,并实时显示启动日志

一、前置说明 在Appium的1.6.0版本中引入了AppiumService类&#xff0c;可以很方便的通过该类来管理Appium服务器的启动和停止。经过测试&#xff0c;使用该类的实例执行关闭server时&#xff0c;并没有释放端口号&#xff0c;会导致第二次启动时失败。另外&#xff0c;使用该…

什么是MyBatis、什么是MyBatis-Plus、简单详细上手案例

什么是MyBatis MyBatis是一个开源的Java持久层框架&#xff0c;用于简化与关系型数据库的交互。它通过将SQL语句与Java代码进行分离&#xff0c;提供了一种优雅的方式来处理数据库操作。 MyBatis的核心思想是将SQL语句与Java方法进行映射&#xff0c;使得开发人员可以通过配置…

Java LeetCode篇-深入了解二叉树的经典解法(多种方式实现:构造二叉树)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 从前序与中序遍历序列来构造二叉树 1.1 实现从前序与中序遍历序列来构造二叉树思路 1.2 代码实现从前序与中序遍历序列来构造二叉树 2.0 从中序与后序遍历序…