(深度学习快速入门)第一章:深度学习概述、应用、学习路线和框架选择

news2024/11/15 13:23:10

文章目录

  • 一:基本概念
    • (1)神经网络
    • (2)感知器
    • (3)深度学习
    • (4)前向运算和反向传播
  • 二:DeepLearning学习路线
  • 三:深度学习应用
    • (1)生活领域
    • (2)深度聚类
  • 四:https://paperswithcode.com/
  • 五:TensorFlow和Pytorch的选择
  • 六:深度学习项目一般流程

一:基本概念

注意

  • 本节内容在前文中已有叙述,因此概念不再做重复,只从具体例子出发解释说明
  • 有些概念介绍的可能没有那么准确和详细,会在后续文章中继续补充

(1)神经网络

  • 如下图是一个简单的人工神经网络,从左至右依次为输入层、隐藏层和输出层,图中的每一个圆圈为人工神经元
  • 每个神经元可以接受一个或多个输入,并对输入的线性加权(连线表示权重)进行非线性运算以产生输出。例如下图中, x 1 ‘ = f ( x 1 , x 2 , x 3 , 1 ) x_{1}^{`}=f(x_{1}, x_{2}, x_{3}, 1) x1=f(x1,x2,x3,1),通常表示为 y = w x + b y=wx+b y=wx+b b b b称之为偏置项
  • 神经网络在训练时,会进行逐层运算,每一层的输出将作为下一层的输入。每相邻两层之间是一个函数关系,多层之间可视为复合函数关系
  • 神经网络最后需要求解出 y = w x + b y=wx+b y=wx+b中的 w w w b b b,因此需要借助链式法则求解梯度,然后进行反向传播

在这里插入图片描述

(2)感知器

  • 上图中 x 1 ‘ x_{1}^{`} x1 x 1 x_{1} x1 x 2 x_{2} x2 x 3 x_{3} x3和偏置项构成一个感知器,可以看出输入层和隐藏层包含多个感知器,所以神经网络也可以称之为由多层感知器所构成网络结构
  • 如下图为感知器模型,其激活函数为神经网络赋予了非线性特性
  • 输出可写为: y = ϕ ( ∑ i = 0 N w i x i − θ j ) y=\phi(\sum\limits_{i=0}^{N}w_{i}x_{i}-\theta_{j}) y=ϕ(i=0Nwixiθj),其中 x 0 x_{0} x0通常被赋值为 + 1 +1 +1,此时 w 0 w_{0} w0为偏置项 b b b
  • 激活函数通常会被设为连续且有界的非线性增函数

在这里插入图片描述

(3)深度学习

  • 神经网络由多层感知器构成,而深度学习可以看成添加了多个隐藏层的多层感知器
  • 当网络结构不同时就会形成不同的深度学习模型,例如DNN、CNN、RNN等,就可以应用在不同的领域

在这里插入图片描述

在这里插入图片描述

(4)前向运算和反向传播

  • 前向运算:在已知参数的前提下,计算输出值的过程

  • 反向传播(BP算法):通过计算输出层结果与真实值之间的偏差来进行逐层调节参数。具体来说,反向传播是求解梯度的一种方法,梯度下降是找损失函数极小值的一种方法

在这里插入图片描述

二:DeepLearning学习路线

  • 这是一个github项目:项目地址

下图是人工智能学习路线的概述,学习完基础后,在了解一些简单的数据处理和机器学习的内容后就可以进入深度学习了,后续学习过程中如果遇到不懂的点随时补充即可

在这里插入图片描述

基础部分
在这里插入图片描述
深度学习部分

在这里插入图片描述

三:深度学习应用

(1)生活领域

  • Speech Recognition(语音识别):例如自动字幕
  • Image Recognition(图像识别):例如人脸识别
  • Automatic Languate Translation(翻译):例如谷歌翻译就基于RNN
  • Medical Diagnosis(医疗诊断):例如CT
  • Stock Market Trading(股票市场):例如量化交易
  • Online Fraud Detection(欺诈检测):例如如钓鱼网站检测
  • Virtual Personal Assistant(语音助理):例如Siri等
  • Self Driving Cars(自动驾驶):例如特斯拉(主要是图像识别)
  • Product Recommendations(推荐系统):例如商品、信息、咨询推荐

(2)深度聚类

深度聚类:传统聚类算法最大的一个瓶颈就是难以处理高维数据,虽然有很多降维方法可以使用,但所采用的降维技术大多无法揭示数据的潜在结构,而且聚类和降维彼此独立,导致降维后特征不是和聚类。有别于传统聚类算法,深度聚类是一种在聚类过程中结合了深度学习技术的聚类算法,现有深度聚类方法主要分为如下两类

  • 顺序深度聚类方法:该类方法特点是表征学习与聚类过程彼此独立,首先利用深度神经网络提取表征,然后将传统聚类算法应用于深度表征,得到聚类结果。其缺点是表征学习的过程缺乏聚类相关的先验知识作为指导,导致学习到的特征不适合聚类
  • 联合深度聚类方法(更优):通过定义一个联合损失函数,在表征学习的过程中融入聚类思想,对表征进行调整,使之容易聚类

在联合深度聚类方法中,基于网格结构可以将其划分如下深度聚类算法

  • 基于自编码器的深度聚类:自编码器(Autoencoder) 由一个编码器和一个解码器组成。编码器将输人信息x映射为潜在空间中的一个潜在表示z。训练时,解码器根据潜在表示z对输入信息进行重构,目的是使输人样本与重构后的样本尽可能相似
  • 基于变分自编码器的深度聚类
  • 基于生成对抗网络的深度聚类(GAN):生成对抗网络(GAN) 由一个生成网络G与一个判别网络D组成,生成网络的输出要尽可能模仿训练集中的真实样本,判别网络以真实样本或生成网络的输出作为输人,其目标是对二者进行区分。两个网络不断对抗,调整各自参数,直到判别网络无法判断生成网络的输出是否真实
  • 基于图神经网络的深度聚类

四:https://paperswithcode.com/

  • 链接
  • B站介绍

这是一个非常出名的深度学习网站,如果你有以下需求时就可以访问它

  • 某一个研究方向下,有哪些算法模型可以用?不同算法之间效果对比如何?
  • 某一个研究方向下,目前效果最好的算法是哪个?
  • 某一个研究方向下,有哪些数据集可以选择?从哪儿下载?
  • 深度学习算法模型中,有哪些方法?有哪些结构?

在这里插入图片描述

五:TensorFlow和Pytorch的选择

注意

  • 如果是工程师,应该优先选TensorFlow2:在工业界最重要的是模型落地,目前国内的大部分互联网企业只支持TensorFlow模型的在线部署,不支持Pytorch

  • 如果是学生或者研究人员,应该优先选择Pytorch:研究人员最重要的是快速迭代发表文章,需要尝试一些较新的模型架构。而Pytorch在易用性上相比TensorFlow2有一些优势,更加方便调试

  • 如果时间足够,最好TensorFlow2和Pytorch都要学习掌握

这里我们选择Pytorch,便于学习,相较于其它框架它的优点有

  • 简洁:PyTorch的设计追求最少的封装,尽量避免重复造轮子。不像TensorFlow中充斥着session、graph、operation、name_scope、variable、tensor、layer等全新的概念,PyTorch的设计遵循tensor→variable(autograd)→nn.Module 三个由低到高的抽象层次,分别代表高维数组(张量)、自动求导(变量)和神经网络(层/模块),而且这三个抽象之间联系紧密,可以同时进行修改和操作。简洁的设计带来的另外一个好处就是代码易于理解。PyTorch的源码只有TensorFlow的十分之一左右,更少的抽象、更直观的设计使得PyTorch的源码十分易于阅读。在笔者眼里,PyTorch的源码甚至比许多框架的文档更容易理解。

  • 速度:PyTorch的灵活性不以速度为代价,在许多评测中,PyTorch的速度表现胜过TensorFlow和Keras等框架 。框架的运行速度和程序员的编码水平有极大关系,但同样的算法,使用PyTorch实现的那个更有可能快过用其他框架实现的。

  • 易用:PyTorch是所有的框架中面向对象设计的最优雅的一个。PyTorch的面向对象的接口设计来源于Torch,而Torch的接口设计以灵活易用而著称,Keras作者最初就是受Torch的启发才开发了Keras。PyTorch继承了Torch的衣钵,尤其是API的设计和模块的接口都与Torch高度一致。PyTorch的设计最符合人们的思维,它让用户尽可能地专注于实现自己的想法,即所思即所得,不需要考虑太多关于框架本身的束缚。

  • 活跃的社区:PyTorch提供了完整的文档,循序渐进的指南,作者亲自维护的论坛 供用户交流和求教问题。Facebook 人工智能研究院对PyTorch提供了强力支持,作为当今排名前三的深度学习研究机构,FAIR的支持足以确保PyTorch获得持续的开发更新,不至于像许多由个人开发的框架那样昙花一现

六:深度学习项目一般流程

在这里插入图片描述

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

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

相关文章

基于Stream的Redis消息队列

目录一、消息队列二、基于List结构模拟消息队列基于List的消息队列的优点:基于List的消息队列的缺点:三、基于PubSub的消息队列基于PubSub的消息队列的优点:基于PubSub的消息队列的缺点:四、基于Stream的消息队列1、XADD语法2、XR…

C++ Primer笔记——allocator、unique_ptr和release、智能指针与动态数组、阻止拷贝

目录 一.P418 unique_ptr和release 二.P426 智能指针与动态数组 (一).unique_ptr (二).shared_ptr 三.P428 allocator (一).申请空间 (二).初始化构造 (三&#…

活动星投票少儿模特大赛网络评选制作一次图文分组投票怎么制作

关于微信投票,我们现在用的最多的就是小程序投票,今天的网络投票,在这里会教大家如何用“活动星投票”小程序来进行投票。我们现在要以“国际车展少儿模特大赛”为主题进行一次投票活动,我们可以在在微信小程序搜索,“…

aws cloudformation 使用模板配置 ecs 蓝绿部署

参考资料 Perform ECS blue/green deployments through CodeDeploy using AWS CloudFormationAWS::CodeDeployBlueGreen 在之前的文章中,使用codepipeline中通过控制台的方式创建了ecs蓝绿部署的demo。实际上可以单独通过codedeploy完成ecs服务的蓝绿部署 参考官…

【ARMv8 SIMD和浮点指令编程】Libyuv I420 转 ARGB 流程分析

Libyuv 可以说是做图形图像相关从业者绕不开的一个常用库,它使用了单指令多数据流提升性能。以 ARM 处理为主线,通过 I420 转 ARGB 流程来分析它是如何流转的。 Libyuv 是一个开源项目,包括 YUV 的缩放和转换功能。 使用邻近、双线性或 box…

QThread、moveToThread用法详述

1.吐槽 QThread类提供了一种平台无关的方法对线程进行管理。但对于QThread类的熟练使用,即使是从事Qt开发多年的程序猿们,往往也会踩雷、入坑。总之:QThread类不好用、如果对该类理解不透,很容易导致程序崩溃。本人强烈建议&#…

(函数介绍)puts()函数

功能介绍 1. puts()函数用来向标准输出设备屏幕输出字符串并换行。 2. 函数的参数就是一个起始的地址,然后就从这个地址开始一直输出字符串,直到碰到\0就停止,然后这个\0是不进行输出的,是不能够算在里面的。与此同时&#xff…

十、字节缓冲流、字符流、转换流、对象操作流、对象序列化流

字节缓冲流 构造方法 字节缓冲流介绍 BufferedOutputStream:该类实现缓冲输出流.通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用BufferedInputStream:创建BufferedInputStream将创建一个内部缓冲区数…

2022年为什么要学习C语言?

为什么学习c语言 为什么学C语言逻辑? 为什么要学习C语言? 学习C语言的主要理由有以下几点: C语言可以作为学习计算机程序设计语言的入门语言; C语言是编写操作系统的首选语言,与计算机硬件打交道时灵巧且高效&…

labelImag安装与使用及构造数据集

在做目标检测任务时,需要进行标注,选择了LabelImg作为标注工具,下面是安装及使用过程。 我们使用Anconda的虚拟环境进行安装,激活环境后,执行: pip install labelimg -i https://pypi.tuna.tsinghua.edu.c…

代码随想录算法训练营第四天 java : 24. 两两交换链表中的节点 ,19.删除链表的倒数第N个节点 ,面试题 02.07. 链表相交,142环形链表II

文章目录Leetcode 24. 两两交换链表中的节点题目链接本题思路需要注意的点AC 代码Leetcode 19.删除链表的倒数第N个节点题目链接需要注意的点AC代码Leetcode面试题 02.07. 链表相交题目链接这个略了Leetcode 142环形链表II题目链接难点:AC代码今日收获**一朵玫瑰正马不停蹄地成…

【Linux】Linux下基本指令(三)

作者:一个喜欢猫咪的的程序员 专栏:《Linux》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 目录 1. Linux基本指令:(续) 1.1zip指令和u…

极智编程 | C++模板函数

欢迎关注我的公众号 [极智视界]&#xff0c;获取我的更多笔记分享 大家好&#xff0c;我是极智视界&#xff0c;本文介绍一下 C模板函数。 模板函数是 C 中一种特殊的函数&#xff0c;它的类型参数列表用尖括号 <> 括起来&#xff0c;放在函数名的后面。使用模板函数&a…

Go 并发

来自 《Go 语言从入门到实战》 的并发章节学习笔记&#xff0c;欢迎阅读斧正&#xff0c;感觉该专栏整体来说对有些后端编程经验的来说比无后端编程经验的人更友好。。 Thread VS Groutine 创建时默认 Stack 大小&#xff1a;前者默认 1M&#xff0c;Groutint 的 Stack 初始化…

C语言可变参数与内存管理

有时&#xff0c;您可能会碰到这样的情况&#xff0c;您希望函数带有可变数量的参数&#xff0c;而不是预定义数量的参数。C 语言为这种情况提供了一个解决方案&#xff0c;它允许您定义一个函数&#xff0c;能根据具体的需求接受可变数量的参数。下面的实例演示了这种函数的定…

LeetCode题解 二叉树(八):404 左叶子之和;513 找树左下角的值;112 路径总和;113 路径总和II

二叉树 404 左叶子之和 easy 左叶子结点也好判断&#xff0c;若某结点属于左结点&#xff0c;且无子树&#xff0c;就是左叶子结点 即也如此&#xff0c;所以如果要判断&#xff0c;必然要从父结点下手&#xff0c;涉及到三层结点的处理 如果要使用递归法&#xff0c;要使用…

(二十三)大白话数据库服务器上的RAID存储架构的电池充放电原理

文章目录 1、RAID卡的缓存2、RAID卡的缓存里的数据会突然丢失怎么办?3、锂电池存在性能衰减问题1、RAID卡的缓存 服务器使用多块磁盘组成的RAID阵列的时候,一般会有一个RAID卡,这个RAID卡是带有一个缓存的,这个缓存不是直接用我们的服务器的主内存的那种模式,他是一种跟内…

网络静态路由综合实验

1.首先分配ip,配置ip和环回 [Huawei]sysname R1 [R1]interface LoopBack 0 [R1-LoopBack0]ip add 192.168.1.33 28 [R1-LoopBack0]q [R1]int l 1 [R1-LoopBack1]ip add 192.168.1.49 28 [R1-LoopBack1]q [R1]int g 0/0/0 [R1-GigabitEthernet0/0/0]ip add 192.168.1.1 30 [R1-…

JVM与Java体系结构

目录 前言 架构师每天都在思考什么&#xff1f; Java vs C Java生态圈 字节码 多语言混合编程 虚拟机与Java虚拟机 虚拟机 Java虚拟机 JVM的位置 JVM整体结构 Java代码执行流程 JVM的架构模型 举例 字节码反编译 总结 栈 JVM生命周期 虚拟机的启动 虚拟机的…

时间从来不语,确回答了所有问题——我的2022年终总结

趁着没阳&#xff0c;趁着电脑还能开机&#xff0c;趁着还能写&#xff0c;赶紧小结过去这一年。没有别的感觉&#xff0c;就是感觉太快&#xff0c;时间太过匆匆.....最大的感触是两个字“变化”&#xff0c;如果非要说四个字是“变化太快”&#xff0c;就如当下的yi情政策&am…