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

news2024/9/21 19:59:23

目录

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

        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.coloradmin.cn/o/2144670.html

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

相关文章

传输层协议 —— UDP协议

目录 0.前言 1.UDP协议格式 16位源端口和目的端口 16位UDP长度 16位校验和 2.UDP协议特点 无连接 不可靠 面向数据报 3.UDP的缓冲区 0.前言 首先,我们得明确一点,网络模型是分层的。自底向上分别是物理层、数据链路层、网络层、传输层、应用层…

Nginx反向代理出现502 Bad Gateway问题的解决方案

🎉 前言 前一阵子写了一篇“关于解决调用百度翻译API问题”的博客,近日在调用其他API时又遇到一些棘手的问题,于是写下这篇博客作为记录。 🎉 问题描述 在代理的遇到过很多错误码,其中出现频率最高的就是502&#x…

JavaEE:网络编程(套接字)

文章目录 Socket套接字TCP和UDP的区别有连接/无连接可靠传输/不可靠传输面向字节流/面向数据报全双工/半双工 UDP/TCP api的使用UDPDatagramSocketDatagramPacketInetSocketAddress练习 TCPServerSocketSocket练习 Socket套接字 Socket是计算机网络中的一种通信机制&#xff0…

驱动开发知识点

裸机开发 ——————————————linux驱动 SOC: 定义:SOC,全称System on Chip,是一种集成了多个功能模块的芯片,包括处理器、内存、外设、接口等。它将原本分散在多个芯片上的功能集成到一个芯片上&#xff0…

一个基于 laravel 和 amis 开发的后台框架, 友好的组件使用体验,可轻松实现复杂页面(附源码)

前言 随着互联网应用的发展,后台管理系统的复杂度不断增加,对于开发者而言,既要系统的功能完备,又要追求开发效率的提升。然而,传统的开发方式往往会导致大量的重复劳动,尤其是在构建复杂的管理页面时。有…

不限学历!这个证书在上海太香了!利于积分、落户、抵扣个税...

一、软考是什么? “软考”全称:计算机技术与软件专业技术资格(水平)考试,关于它你需要知道: 1、软考是全国性考试:软考实行全国统一规划,实行统一大纲,统一试题&#xff…

【vulhub】Os-hackNos-1

🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍收藏💗支持一下哦 【vulhub】Os-hackNos-1 环境搭建漏洞复现 环境搭建 进入vulnhub官网 https://vulnhub.com 下载镜像 在虚拟机中打开镜像文件…

100行Python代码实现FastAPI Websocket 聊天室(纯协程方案)

本文发表于入职啦(公众号: ruzhila) 大家可以访问入职啦学习更多的编程实战。 项目地址 代码已经开源, fastapi_chatroom 👏 欢迎Star 代码运行效果: 所有的项目都在github上开源:100-line-code 欢迎Star 👏 用100行…

open sora1.1容器构建教程指南

一、介绍 Open-Sora 1.1 项目是 Colossal AI 团队开发的一个完全开源的视频生成项目,该项目致力于高效制作高质量视频,并通过开源原则实现先进视频生成技术的低成本普及。 1. 项目背景与目标 Open-Sora 项目旨在通过提供开源的模型、工具和内容&#…

idea使用阿里云服务器运行jar包

说明&#xff1a;因为我用的阿里云服务器不是自己的&#xff0c;所以一些具体的操作可能不太全面。看到一个很完整的教程&#xff0c;供参考。 0. 打包项目 这里使用的是maven打包。 在pom.xml中添加以下模块。 <build><plugins><plugin><groupId>org…

JDBC导图

思维歹徒 一、使用步骤 二、SQL注入 三、数据库查询&#xff08;查询&#xff09; 四、数据库写入&#xff08;增删改&#xff09; 五、Date日期对象处理 六、连接池使用 创建连接是从连接池拿&#xff0c;释放连接是放回连接池 七、事务和批次插入 八、Apache Commons DBUtil…

进程监控与管理详解

一、进程的定义: 进程process是正在运行的程序,包括: 分配的内存地址空间 安全属性、包括所有权和特权 一个或多个线程 进程状态 进程的环境包括: 本地和全局变量 当前调度上下文…

多目标优化算法(Multi-Objective Optimization Algorithms, MOOA)介绍

在现实世界中&#xff0c;许多问题都涉及到多个目标的权衡和优化。例如&#xff0c;在工程设计中&#xff0c;可能需要同时考虑成本、效率和可靠性&#xff1b;在资源管理中&#xff0c;可能需要平衡环境保护和经济效益。多目标优化算法&#xff08;Multi-Objective Optimizati…

bmp格式图片怎么转换jpg?这几种转换方法超级好用!

bmp格式图片怎么转换jpg&#xff1f;BMP格式&#xff0c;这一历史悠久的图像编码方式&#xff0c;正逐渐在数字时代的浪潮中显得力不从心&#xff0c;其边缘化的趋势愈发明显&#xff0c;这一现象的根源&#xff0c;在于BMP格式固有的局限性难以匹配现代用户对于图像处理的多元…

【Python】探索Magenta:音乐与艺术的机器智能创作

下班了&#xff0c;今天的苦就先吃到这里。 在人工智能的浪潮中&#xff0c;机器学习技术正逐渐渗透到艺术创作的各个领域。今天&#xff0c;我们来探索一个特别的项目——Magenta&#xff0c;它是由Google Brain团队发起的&#xff0c;旨在使用机器智能生成音乐和艺术。这个项…

Lucene详解介绍以及底层原理说明

文章目录 什么是Lucene?示意图1. 倒排索引2. 索引创建过程3. 数据存储4. 搜索过程5. 相关性评分 Lucene底层原理1. 倒排索引2. 索引创建过程3. 数据存储4. 搜索过程5. 相关性评分 什么是Lucene? Lucene是一个高性能的全文搜索引擎库&#xff0c;它基于倒排索引技术实现快速、…

Threejs之看房案例(下)

本文目录 前言最终效果1、点精灵1.1 添加点精灵1.2 点精灵效果2、添加事件2.1 鼠标移动事件2.1.1 效果2.2 鼠标点击事件2.2.1 效果2.3 切换互通3. 完整代码前言 在Threejs之看房案例(上)这篇博客中我们已经完成了大厅的3d观看效果,但是我们会发现如果想去其他房间观看,没有…

vue3+ant design vue 中弹窗自定义按钮设置及以冒号为基准布局

1、自定义弹窗按钮&#xff0c;去除取消和确定按钮。&#xff08;网上很多方法都是说通过插槽来实现&#xff0c;但是试了下不生效&#xff0c;那既然插槽不生效的话&#xff0c;干脆直接写按钮就好了&#xff09; <a-modalv-model:open"open"title"人员信息…

为什么现在都流行开放式耳机?四款性能出色的蓝牙耳机推荐

在当下&#xff0c;开放式耳机逐渐成为众多消费者的新宠。与传统入耳式耳机相比&#xff0c;开放式耳机展现出诸多独特之处。它可以呈现出更清晰的音质效果&#xff0c;让用户有更美妙的听觉体验。在佩戴感上&#xff0c;开放式耳机更为舒适&#xff0c;不会给耳朵带来压迫感。…

MYSQL登录失败,确保密码正确,常见问题

今天登录MYSQL时&#xff0c;发现登录不进去,我能确保密码没有错误&#xff0c;并且我昨天以这样的方式登录成功&#xff0c;我已经重启过mysql服务&#xff0c;但是依旧登录不进去。 C:\Users\user>mysql -u root -p Enter password: ****** ERROR 1045 (28000): Access …