《深度学习》PyTorch框架 优化器、激活函数讲解

目录

一、深度学习核心框架的选择

        1、TensorFlow

                1)概念

                2)优缺点

        2、PyTorch

                1)概念

                2)优缺点

        3、Keras

                1)概念

                2)优缺点

        4、Caffe

                1)概念

                2)优缺点

二、pytorch安装

        1、安装

        2、pytorch分为CPU版本和GPU版本

                1)CPU版本

                2)GPU版本

        3、相关显卡参数

                1)显卡容量

                2)显存频率

                3)显存位宽

                4)如何查看电脑是CPU还是GPU

三、PyTorch框架认识

        1、利用MNIST数据集实现神经网络的图像识别

        2、大致流程

        3、模型的结构

        4、优化器

                1)BGD(Batch Gradient Descent):批量梯度下降法

                2)SGD(Stochastic Gradient Descent):随机梯度下降

                3)Adam(Adaptive Moment Estimation):自适应优化算法

                4)Adagrad(Adaptive Gradient Algorithm):自适应学习率优化算法

                5)RMSprop(Root Mean Square Propagation):自适应学习率优化算法。

                6)小批量梯度下降法(Mini-batch Gradient Descent)

                7)等等多种优化算法

四、激活函数

        1、常见激活函数

                1)Sigmoid

 

                2)ReLU

                3)anh

                4)LeakyReLU

                5)Softmax

        2、梯度消失

        3、梯度爆炸


一、深度学习核心框架的选择

        1、TensorFlow

                1)概念

                     由Google开发并维护的深度学习框架,具有广泛的生态系统和强大的功能。它支持多种硬件平台,包括CPU、GPU和TPU,并且提供易于使用的高级API(如Keras)和灵活的底层API。

                2)优缺点

                      优点:广泛的生态系统和强大的功能、支持跨平台使用......

                      缺点:代码比较冗余,上手有难度......

                     

        2、PyTorch

                1)概念

                        由Facebook开发的深度学习框架,被认为是TensorFlow的竞争者之一。它具有动态计算图的特性,使得模型的定义和训练更加灵活。PyTorch也具有广泛的生态系统,并且在学术界和研究领域非常受欢迎。

                2)优缺点

                      优点:上手极容易,直接套用模板、易于调试和可视化.......

                      缺点:相对较小的生态系统、相对较少的文档和教程资源

        3、Keras

                1)概念

                        一个高级的深度学习框架,在tensorflow基础上做了封装,可以在TensorFlow和Theano等后端上运行。Keras具有简洁的API,使得模型的定义和训练变得简单易用。它适合对深度学习有基本了解的初学者或者快速原型开发。

                2)优缺点

                      优点:简化代码难度、简洁易用的API、多后端支持.....

                      缺点:功能相对有限、性能较差

        4、Caffe

                1)概念

                        一个由贾扬清等开发的深度学习框架,主要面向卷积神经网络(CNN)的应用。Caffe具有高效的C++实现和易于使用的配置文件,是许多计算机视觉任务的首选框架。

                2)优缺点

                      优点:只需要配置文件即可搭建深度神经网络模型

                      缺点:安装麻烦,缺失很多新网络模型,近几年几乎不更新

二、pytorch安装

        1、安装

                安装教程见上一篇博客,连接如下:

https://blog.csdn.net/qq_64603703/article/details/142218264?fromshare=blogdetail&sharetype=blogdetail&sharerId=142218264&sharerefer=PC&sharesource=qq_64603703&sharefrom=from_linkicon-default.png?t=O83Ahttps://blog.csdn.net/qq_64603703/article/details/142218264?fromshare=blogdetail&sharetype=blogdetail&sharerId=142218264&sharerefer=PC&sharesource=qq_64603703&sharefrom=from_link

       

        2、pytorch分为CPU版本和GPU版本

                1)CPU版本

                        CPU又称中央处理器,作为计算机系统的运算控制核心,是信息处理、程序运行的最终执行单元。可以形象地理解为有25%的ALU(运算单元)、有25%的Control(控制单元)、50%的Cache(缓存)单元,如下图所示:

       

                2)GPU版本

                GPU又称图像处理器,是一种专门在个人电脑等一些移动设备上做图像和图形相关运算工作的微处理器。可以形象地理解为90%的ALU(运算单元),5%的Control(控制单元)、5%的Cache(缓存)。

                如上图所示可发现,GPU中的控制单元和缓存的位置在整个模块的左侧一点点,剩下的全部都是运算单元用来计算的,而CPU中控制单元和缓存的位置几乎占了整个模块的一半,大大减少了运算能力,所以pytorch可以安装cuda及相关驱动来调用GPU对模型进行计算,以的到加速运算的目的。

                例如有下列图片,需要对其进行训练,将其传入CPU,可见传入空间几乎占满,而传入GPU却绰绰有余。

        3、相关显卡参数

                1)显卡容量

                        决定着临时存储数据的能力,如 6GB、8GB、24GB、48GB等等

                2)显存频率

                        反应显存的速度,如 1600MHz、1800MHz、3800MHz、5000MHz等

                3)显存位宽

                        一个时钟周期内所能传送数据的位数,如 64、128、192、256、384、448、512。

                4)如何查看电脑是CPU还是GPU

                        右击状态栏打开任务管理器,在性能里即可查看

三、PyTorch框架认识

        1、利用MNIST数据集实现神经网络的图像识别

                代码流程见上节课所学内容

《深度学习》PyTorch 手写数字识别 案例解析及实现 <上>

《深度学习》PyTorch 手写数字识别 案例解析及实现 <下>

       

        2、大致流程

                有如下手写图片,现在想通过训练模型来判断这个手写数字所代表的是什么数字,此时首先使用命令datasets.MNIST下载训练数据集和测试数据集,这两份数据中包含大量的手写数字及其对应的真实数字类型,将这些图片以例如64张图片及其类别打包成一份,然后再在GPU中建立模型,将这些打包好的图片数据信息传入GPU对其进行计算和训练,训练好的模型可以导入上述打包好的测测试集数据进行测试并与真实值对比,然后计算得到准确率。

       

        3、模型的结构

                例如使用神经网络的多层感知器

        4、优化器

                1)BGD(Batch Gradient Descent):批量梯度下降法

                   使用全样本数据计算梯度,例如一个batch_size=64,计算出64个梯度值,好处是收敛次数少。坏处是每次迭代需要用到所有数据,占用内存大耗时大。

                2)SGD(Stochastic Gradient Descent):随机梯度下降

                   从64个样本中随机抽出一组,训练后按梯度更新一次

                   SGD的原理是在每次迭代中,从训练集中随机选择一个样本进行梯度计算,并根据学习率和动量等参数更新模型参数。

                3)Adam(Adaptive Moment Estimation):自适应优化算法

                   结合了动量和RMSprop的思想,Adam使用动量的概念来加速收敛,并根据每个参数的历史梯度自适应地调整学习率。它计算每个参数的自适应学习率,以及每个参数的梯度的指数移动平均方差。

                4)Adagrad(Adaptive Gradient Algorithm):自适应学习率优化算法

                   它为每个参数维护一个学习率,并根据参数的历史梯度调整学习率。Adagrad使用参数的梯度平方和的平方根来缩放学习率,从而对于稀疏参数更加适用。

                5)RMSprop(Root Mean Square Propagation):自适应学习率优化算法。

                   它类似于Adagrad,但引入了一个衰减系数来平衡历史梯度的重要性。RMSprop使用历史梯度的平均值的平方根来调整学习率。

                6)小批量梯度下降法(Mini-batch Gradient Descent)

                   将训练数据集分成小批量用于计算模型误差和更新模型参数。是批量梯度下降法和随机梯度下降法的结合。

                7)等等多种优化算法

四、激活函数

        1、常见激活函数

                1)Sigmoid

                      Sigmoid函数将输入映射到0到1之间的连续值,其将输入转换成概率值,常用于二分类问题。Sigmoid函数的缺点是在输入较大或较小的情况下,梯度接近于0,可能导致梯度消失问题。

       

                2)ReLU

                      ReLU是最常用的激活函数之一。它将输入小于0的值设为0,大于等于0的值保持不变。ReLU的原理是通过引入非线性,使得神经网络能够学习更复杂的函数。ReLU具有简单的计算和导数计算,且能够缓解梯度消失问题。

                3)anh

                      anh函数将输入映射到-1到1之间的连续值。它的原理与Sigmoid函数类似,但输出范围更大。Tanh函数也具有非线性性质,但仍存在梯度消失问题。

                4)LeakyReLU

                      LeakyReLU是ReLU的变体,它在输入小于0时引入小的斜率,使得负数部分也能有一定的激活。LeakyReLU的原理是通过避免ReLU中的“神经元死亡”问题,进一步缓解梯度消失。

                5)Softmax

                      Softmax函数将输入转换为概率分布,用于多分类问题。Softmax的原理是将输入的指数形式归一化,保证输出是一个概率分布,且每个类别的概率和为1。

        2、梯度消失

                指在神经网络的反向传播过程中,梯度逐渐变小并趋近于零的现象。当梯度接近于零时,权重更新的幅度变得非常小,导致网络参数更新缓慢甚至停止更新,从而影响网络的训练效果。

                通常发生在使用一些特定的激活函数和深层神经网络中。当深层网络的激活函数是Sigmoid或Tanh等饱和函数时,这些函数的导数在输入较大或较小的情况下接近于零,导致梯度逐渐缩小。随着反向传播的进行,梯度会传递到浅层网络,导致浅层网络的参数更新缓慢,最终影响整个网络的训练效果。

        

        3、梯度爆炸

                指在神经网络的训练过程中,梯度增长得非常快,导致梯度值变得非常大甚至无限大的现象。当梯度值变得非常大时,权重的更新幅度也会变得非常大,导致网络参数发生剧烈的变化,进而影响网络的稳定性和训练效果。

                梯度爆炸通常发生在使用一些特定的激活函数和深层神经网络中。当深层网络的激活函数是非线性函数时,特别是使用在深层堆叠的神经网络中时,梯度可能会无限制地增大。这是因为在反向传播过程中,梯度会在每个隐藏层传递并相乘,导致梯度指数级地增长。

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

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

相关文章

【人工智能】在大型活动中的应用案例

人工智能在娱乐大型活动中的应用 ## 作者主页: 知孤云出岫 目录 **人工智能在娱乐大型活动中的应用****1. 引言****2. 智能票务与入场管理****2.1 动态定价与票务预测****2.2 生物识别技术快速入场****2.3 区块链技术防伪票务管理** **3. 智能观众互动与个性化体验****3.1 个性…

CCF csp认证 小白必看

c支持到C17(还是更高?);所以学一些封装好的函数功能是必要的---比如STL里的函数; 因为可携带纸质资料,建议打印带入,需要时可翻阅。 【题目概述:】 0-devc环境配置 配置好你常用的编译版本: 想要调试记得开启下选…

Python练习宝典:Day 1 - 选择题 - 基础知识

目录 一、踏上Python之旅二、Python语言基础三、流程控制语句四、序列的应用 一、踏上Python之旅 1.想要输出 I Love Python,应该使用()函数。 A.printf() B.print() C.println() D.Print()2.Python安装成功的标志是在控制台(终端)输入python/python3后,命令提示符变为: A.&…

Linux自主学习篇

用户及权限管理 sudo 是 "superuser do" 的缩写,是一个在类 Unix 操作系统(如 Linux 和 macOS)中使用的命令。它允许普通用户以超级用户(root 用户)的身份执行命令,从而获得更高的权限。 useradd…

数据飞轮:打造业务增长的持续循环

在当今数据驱动的世界中,企业必须利用数据的力量才能保持竞争力。然而,仅仅收集和分析数据是不够的;企业必须能够从他们的数据中创造一个持续增长的循环,才能保持成功。其中一种方法就是创建数据飞轮。接下来让我们来探讨一下什么…

网络高级day03(Http)

目录 【1】HTTP简介 【2】 HTTP特点 【3】 HTTP协议格式 1》客户端请求消息格式 1> 请求行 2> 请求头 3> 空行 4> 请求数据 2》服务器响应消息格式 【1】HTTP简介 HTTP协议是Hyper Text Transfer Protocol (超文本传输协议)的缩写&a…

Python_控制循环语句

if语句单分支结构的语法形式如下&#xff1a; 【操作】输入一个数字&#xff0c;小于10&#xff0c;则打印这个数字(if_test01.py)&#xff1a; num input("输入一个数字&#xff1a;") if int(num)<10: print("小于10的数&#xff1a;"num)条件表达式…

Shader 中的光源

1、Shader 开发中常用的光源属性 Unity当中一共支持四种光源类型&#xff1a; 平行光&#xff08;Directional&#xff09;点光源&#xff08;Point&#xff09;聚光灯&#xff08;Spot&#xff09;面光源&#xff08;Area&#xff09;— 面光源仅在烘焙时有用 不管光源类型到…

[网络层]-IP协议相关特性

IP协议 基本概念 主机 : 配有IP地址,但是不进行路由控制的设备路由器 : 既配有IP地址,又能进行路由控制节点: 主机和路由器的统称 协议头格式 4位版本(version):占四位,用于指定IP协议的版本,例如,使用IPv4,该字段就为44位首部长度: 表示IP协议首部的长度,以32位bit (4字节)…

Linux:终端(terminal)与终端管理器(agetty)

终端的设备文件 打开/dev目录可以发现其中有许多字符设备文件&#xff0c;例如对于我的RedHat操作系统&#xff0c;拥有tty0到tty59&#xff0c;它们是操作系统提供的终端设备。对于tty1-tty12使用ctrlaltF*可以进行快捷切换&#xff0c;下面的命令可以进行通用切换。 sudo ch…

【小bug】使用 RestTemplate 工具从 JSON 数据反序列化为 Java 对象时报类型转换异常

起因&#xff1a;今天编写一个请求时需要通过RestTemplate调用外部接口&#xff0c;获取一些信息&#xff0c;但是在获取了外部接口响应内容后&#xff0c;使用强制转换发现报了类型转换异常。之前也遇到过&#xff0c;但是没记录下来&#xff0c;今天又查了一遍……干脆记录一…

Springboot使用ThreadPoolTaskScheduler轻量级多线程定时任务框架

简介&#xff1a; Spring注解定时任务使用不是很灵活&#xff0c;如果想要灵活的配置定时任务&#xff0c;可以使用xxl-job 或者 quartz等定时任务框架&#xff0c;但是过于繁琐&#xff0c;可能成本较大。所以可以使用ThreadPoolTaskScheduler来灵活处理定时任务 ThreadPoolT…

【C++】二叉搜索树的底层以及实现

个人主页 文章目录 ⭐一、二叉搜索树的概念&#x1f680;二、二叉搜索树性能分析&#x1f3dd;️三、二叉搜索树的操作1. 插入2. 查找3. 删除4. 遍历节点 &#x1f384;四、二叉搜索树的实现&#xff08;K模型&#xff09;&#x1f389;五、二叉搜索树的应用1. K模型2. KV模型…

基于ACMEv2协议的免费SSL证书申请-支持Let‘s Encrypt/Google/ZeroSSL

项目&#xff1a;https://github.com/cook-code-jazor/acmex 非开源&#xff0c;使用webui管理证书的申请&#xff0c;所有文件本地化存储&#xff0c;支持windows/linux/osx。 证书申请直连ACMEv2服务商&#xff0c;没有任何中间接口&#xff0c;支持Lets Encrypt/Google/Ze…

图说GPT网络结构(参数量与计算量估计)

现在AI领域的主流模型几乎都是Transformer网络架构衍生而来。大热的LLM中的生成类模型很多都是来自于Transformer的变体&#xff0c;即decoder only架构。而GPT就是该类中的经典模型。尽管现在变体甚多&#xff0c;但大多没有根本性地改变其套路。 为了阐述方便&#xff0c;首…

云平台在大规模设备管理和数据分析中的作用

在当代数字化转型的浪潮中&#xff0c;云平台作为信息技术基础设施的核心组件&#xff0c;扮演着无可替代的角色&#xff0c;尤其在大规模设备管理和数据分析领域&#xff0c;其重要性和影响力日益凸显。本文旨在深入探讨云平台如何通过其独特的优势&#xff0c;促进数据的高效…

微软AI核电计划

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

2024PDF内容修改秘籍:工具推荐与技巧分享

现在我们使用PDF文档的频率越来越高了&#xff0c;很多时候收到的表格之类的资料也都是PDF格式的&#xff0c;如果进行转换之后编辑再转换为PDF格式还是有点麻烦的&#xff0c;那么pdf怎么编辑修改内容呢&#xff1f;这篇文章我将介绍几款可以直接编辑PDF文件的工具来提高我们的…

【Java】线程暂停比拼:wait() 和 sleep()的较量

欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持&#xff01; 在Java多线程编程中&#xff0c;合理地控制线程的执行是至关重要的。wait()和sleep()是两个常用的方法&#xff0c;它们都可以用来暂停线程的执行&#xff0c;但它们之间存在着显著的差异。本文将详…

什么是 HTTP/3?下一代 Web 协议

毫无疑问&#xff0c;发展互联网底层的庞大协议基础设施是一项艰巨的任务。 HTTP 的下一个主要版本基于 QUIC 协议构建&#xff0c;并有望提供更好的性能和更高的安全性。 以下是 Web 应用程序开发人员需要了解的内容。 HTTP/3 的前景与风险 HTTP/3 致力于让互联网对每个人…