《深度学习》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_link
https://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、梯度爆炸
指在神经网络的训练过程中,梯度增长得非常快,导致梯度值变得非常大甚至无限大的现象。当梯度值变得非常大时,权重的更新幅度也会变得非常大,导致网络参数发生剧烈的变化,进而影响网络的稳定性和训练效果。
梯度爆炸通常发生在使用一些特定的激活函数和深层神经网络中。当深层网络的激活函数是非线性函数时,特别是使用在深层堆叠的神经网络中时,梯度可能会无限制地增大。这是因为在反向传播过程中,梯度会在每个隐藏层传递并相乘,导致梯度指数级地增长。
相关文章:
《深度学习》PyTorch框架 优化器、激活函数讲解
目录 一、深度学习核心框架的选择 1、TensorFlow 1)概念 2)优缺点 2、PyTorch 1)概念 2)优缺点 3、Keras 1)概念 2)优缺点 4、Caffe 1)概念 2)优缺点 二、pytorch安装 1、安装 2、…...
Linux:进程(四)
目录 一、进程优先级 二、Linux调度与切换 1.背景 2.进程切换 一、进程优先级 背景:在计算机中,软硬件资源是有限的,而进程想要访问某一种资源,就得通过排队来保证访问资源的过程是有条不紊的。 Linux下对优先级的定义。执行命…...
CTC loss 博客转载
论文地址: https://www.cs.toronto.edu/~graves/icml_2006.pdf 为了对应这个图,我们假设一种符合的模型情况: 英文OCR,37个类别(26个小写字母10个汉字空格),最大输出长度8个字符 模型预测结果…...
TryHackMe 第3天 | Pre Security (中)
该学习路径讲解了网络安全入门的必备技术知识,比如计算机网络、网络协议、Linux命令、Windows设置等内容。上一篇中简短介绍了计算机网络相关的知识,本篇博客将记录 网络协议 部分。 How the web works? DNS in detail DNS (Domain name system&…...
c语言中“qsort函数”和“结构体成员访问变量”
qsort函数: qsort是c语言中的库函数,这个函数是对数据进行排序(对任意) 冒泡排序中排列整数顺序用的函数只适用于整形,而qsort函数适用与所有数据 排序算法 冒泡排序 插入 选择 快速 void qsort{ void * base&…...
【MySQL】在MySQL中STR_TO_DATE()
1.在MySQL中STR_TO_DATE() 在MySQL中,STR_TO_DATE() 函数用于将字符串转换为日期格式。这个函数非常有用,当你需要将文本数据转换为可由MySQL日期和时间函数处理的格式时。 1.1 语法 STR_TO_DATE() 函数的基本语法如下: STR_TO_DATE(date…...
PCIE集成验证(五)MSI/MSI-X中断
PCI 总线最早采用的中断机制是 INTx,这是基于边带信号的。后续的 PCI/PCI-X版本,为了消除边带信号,降低系统的硬件设计复杂度,逐渐采用了 MSI(Message Signaled Interrupt)/MSI-X(消息信号中断)的中断机制。…...
leetcode 380.O(1) 时间插入、删除和获取随机元素
实现RandomizedSet 类: RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true ;否则,返回 false 。bool remove(int val) 当元素 val 存在时࿰…...
基于MicroPython的ESP8266控制PS2摇杆模块的设计方案
以下是一个基于MicroPython的ESP8266控制PS2摇杆模块的设计方案: 一、硬件准备: 1. 一块ESP8266开发板,如NodeMCU 2. 一个带有X、Y轴模拟输出和Z轴(按钮)数字输出的PS2摇杆模块 3. 杜邦线若干 4. 3.3V直流电源 二、硬件连接:…...
Spring Boot 3项目使用Swagger3教程
Spring Boot 3项目使用Swagger3教程 Swagger:自动生成接口文档 添加依赖(pom.xml) <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.1…...
linux-系统备份与恢复-系统恢复
Linux 系统备份与恢复:系统恢复 1. 概述 Linux 系统的恢复是系统管理的重要组成部分,它指的是在系统崩溃、硬件故障、误操作或安全问题后,恢复系统到可用状态的过程。良好的系统恢复计划可以有效避免数据丢失和业务中断,并确保系…...
【Rust语言】std::collections::HashMap用法
HashMap用法文档 文章目录 创建键的要求 增删改查增: insert删: remove/remove_entry改单点修改 get_mut整体修改 values_mut/iter_mut 查集增改于一身的entry 遍历只读遍历into_values() 与 into_keys()容量、实际长度、判空导出清除重定容量 use std::collections::HashMap;创…...
使用SoapUI、Postman工具调用Webservice方法
SoapUI工具更适合调用Webservice使用。 1.使用SoapUI工具调用Webservice 创建“New SOAP Project” 自行定义一个项目名称,输入wsdl地址: 在左侧列表找到方法名,双击“Request 1”, 在请求数据中,添加对应的参数,然…...
js 与 C++引用和指针的关系
js 与 C引用和指针的关系 js 中既有引用的影子, 也有指针的影子。 1、引用用法 这里相当于C 中的引用, b是a的引用, 修改b ,a也改变。 var a { 1: 1 }var b a;a null;b[2] 2;console.error(b); // { 1: 1, 2: 2 }2、指针用法 这里 a,b应该按照指针理解。 var a undef…...
python --PyAibote自动化
官文: https://www.pyaibote.com/ 下载安卓集成环境: 可以看到开发的一些信息...
Ubuntu系统开发环境搭建
一,Android源码编译环境搭建 1 安装Java Development Kit (JDK) sudo apt-get update sudo apt-get install openjdk-8-jdk 2,确认JDK安装成功 java -version 3,安装编译所需的依赖项 sudo apt-get install git-core gnupg flex bison gperf build-essential zip cu…...
lvs-dr模式实验详解
华子目录 lvs-dr(企业当中最常用)dr模式数据逻辑dr模式数据传输过程dr模式的特点实验拓扑实验主机准备解决vip响应问题限制响应级别:arp_ignore限制通告级别:arp_announce 实验步骤1.client的ip设定2.router上的ip设定3.router开启路由转发功能4.lvs主机…...
【RDMA】mlxconfig修改和查询网卡(固件)配置--驱动工具
目录 简介 工具要求 语法 例子和参数 例子 更多参数 其他工具和查询 简介 mlxconfig 工具允许用户在不重新烧录固件的情况下更改某些设备配置。 配置在重启后仍然保留。 默认情况下,mlxconfig 显示将在下次启动时加载的配置。对于第五代设备,还…...
跨站请求伪造(CSRF)漏洞详解
免责申明 本文仅是用于学习检测自己搭建的DVWA靶场环境有关CSRF的原理和攻击实验,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《中华人民共和国网络安全法》及其所在国家地区相关法…...
Java+Spring Cloud +UniApp 智慧工地源码,用户PC端、移动端数据同步,支持多端展示
数字化给各行各业所带来的改变,在早些年间突出自动这一流程。但随着科技的发展,让人们也愈发了解可视化操作所带来的优势。智慧工地的诞生,相当于为建筑施工带来了一套较为完整的数字化流程,能够完善施工环节中的各部分内容。接下…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
