3.Introduction to PyTorch YouTube Series--Autograd
前言学习地址方向导数研究函数在某一点处沿某个方向的变化率梯度本质是一个向量它的方向是函数在某一点处方向导数取得最大值的方向也就是某一点处变化率最快的方向它的向量模就意味着最大值。python中的autograd运行时动态地追踪你的计算过程也可以轻松的计算梯度我们通过研究损失函数的梯度来不断的修正深度学习方向使用简单示例用requires_grad开启计算图跟踪用backward()对一个函数来求梯度也就是对各个自变量的偏导按照数学上的定义用grad来获得的只是某个自变量的偏导值但是在pytorch中很多时候直接称grad拿到的就是梯度。# 创建一个0-2pi上均匀分布的含有25个元素的张量atorch.linspace(0.0,2.0*math.pi,steps25,requires_gradTrue)print(a)btorch.sin(a)# 输出中可以看到b是怎么来的print(b)# matplotlib 要求输入为 NumPy 数组所以需要在绘图前进行分离plt.plot(a.detach(),b.detach())c2*b1outc.sum()out.backward()# 只能获取叶子节点(也就是自变量)的梯度输入端a可以b、c都不行print(a.grad)plt.plot(a.detach(),a.grad.detach())plt.show()训练模型中的autograd通过一个实际的训练模型来了解到autograd的意义BATCH_SIZE16# 批次大小一次处理16个样本DIM_IN1000# 输入维度每个样本有1000个特征HIDDEN_SIZE100# 隐藏层大小中间层有100个神经元DIM_OUT10# 输出维度每个样本输出10个值classTinyModel(torch.nn.Module):def__init__(self):# 初始化层结构三层神经网络super(TinyModel,self).__init__()self.layer1torch.nn.Linear(DIM_IN,HIDDEN_SIZE)self.relutorch.nn.ReLU()self.layer2torch.nn.Linear(HIDDEN_SIZE,DIM_OUT)# 对基类方法的重写torch.nn.Module 在底层实现了 __call__ 方法并会在其中调用forwarddefforward(self,x):# 前向传播描述了数据进入模型后的计算顺序xself.layer1(x)xself.relu(x)xself.layer2(x)returnxdeft2():some_inputtorch.randn(BATCH_SIZE,DIM_IN,requires_gradFalse)ideal_outputtorch.randn(BATCH_SIZE,DIM_OUT,requires_gradFalse)modelTinyModel()# 查看权重print(------------weight1-----------------)print(model.layer2.weight[0][0:10])print(model.layer2.weight.grad)# 把模型中的layer1和layer2的权重传进来作为可优化的参数训练后计算均方误差optimizertorch.optim.SGD(model.parameters(),lr0.001)predictionmodel(some_input)loss(ideal_output-prediction).pow(2).sum()print(loss)# 普通张量的requires_grad默认是false但是模型参数比如权值的是true所以最后的结果也是true# 为权值计算梯度但是权值相较上面还没有发生变化因为optimizer优化器还没有启动loss.backward()print(--------------weight2---------------)print(model.layer2.weight[0][0:10])print(model.layer2.weight.grad[0][0:10])optimizer.step()print(--------------weight3---------------)print(model.layer2.weight[0][0:10])print(model.layer2.weight.grad[0][0:10])# 梯度清零,否则每次调用 loss.backward() 时算出的梯度不会覆盖参数上已有的.grad# 而是累加到 .grad 属性中。optimizer.zero_grad(set_to_noneFalse)print(model.layer2.weight.grad[0][0:10])在这段代码中关于梯度有几个值得注意的点1.普通张量的梯度开关默认是False而训练模型中的参数如权重张量的开关默认是True所以最后的结果是可以求梯度的2.模型的改进在于权重比如一个线性模型yAxb研究的就是A、b哪一个更合适而输入是给定的所以求权重的梯度并改进权重才是训练模型应该做的3.PyTorch 的 loss.backward() 默认要求调用者必须是一个标量4.多次训练会存在梯度累加的问题而我们的模型往往需要循环训练多次因此每轮训练后要做梯度清零的操作# 标准的训练循环模式forepochinrange(num_epochs):# 1. 必须先清空梯度optimizer.zero_grad()# 2. 前向传播predictionmodel(some_input)# 3. 计算损失loss(ideal_output-prediction).pow(2).sum()# 4. 反向传播计算当前 Batch 的梯度loss.backward()# 5. 更新参数optimizer.step()梯度的原地操作在使用autograd时必须谨慎使用原地操作因为这样做可能会破坏在调用backward()时计算导数所需的信息进而报错比如atorch.linspace(0.,2.*math.pi,steps25,requires_gradTrue)a.sin_()

相关新闻

思源宋体TTF:7种字重免费商用中文字体的终极指南

思源宋体TTF:7种字重免费商用中文字体的终极指南

思源宋体TTF:7种字重免费商用中文字体的终极指南 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在寻找一款既专业又完全免费的中文字体吗?思源宋体TTF&#…

2026/8/5 10:52:50 阅读更多 →
Linux下Unreal Engine深度集成Cesium插件:源码编译与引擎嵌入实战

Linux下Unreal Engine深度集成Cesium插件:源码编译与引擎嵌入实战

1. 项目概述与核心目标最近在Ubuntu 20.04.1上折腾Unreal Engine,想把CesiumForUnreal这个强大的地理空间插件给集成进去,结果踩了一路的坑。我的目标很明确:不是简单地把插件放到某个项目里,而是要把插件直接编译并嵌入到Unreal …

2026/8/5 10:51:50 阅读更多 →
UE4/UE5游戏打包后窗口模式配置详解:DefaultGameUserSettings.ini实战指南

UE4/UE5游戏打包后窗口模式配置详解:DefaultGameUserSettings.ini实战指南

1. 项目概述:为什么打包后的游戏窗口模式这么重要?刚接触虚幻引擎(UE4/UE5)的开发者,尤其是独立开发者或小团队,常常会遇到一个看似简单却让人头疼的问题:在编辑器里运行得好好的,怎…

2026/8/5 10:51:50 阅读更多 →

最新新闻

西安同城顺风车系统开发实战指南:架构设计与部署流程

西安同城顺风车系统开发实战指南:架构设计与部署流程

西安同城顺风车系统开发实战指南:架构设计与部署流程 西安同城顺风车系统开发是一个典型的LBS(基于位置服务) 出行匹配项目。它需要解决的核心问题是:如何在城市范围内,高效、安全地匹配司机与乘客的出行路线。本文将基…

2026/8/5 11:45:16 阅读更多 →
AI技术正在重构嵌入式软件开发范式

AI技术正在重构嵌入式软件开发范式

摘要:AI 技术正在深刻重构嵌入式软件开发范式,从工具链智能化、系统设计优化、运行时自适应到全生命周期管理,推动开发模式从"手工技艺"向"AI 辅助工程"转变。本文系统阐述了 AI 如何赋能嵌入式软件的开发、测试、分析、…

2026/8/5 11:45:16 阅读更多 →
方法参数与Debug按键

方法参数与Debug按键

1、基本数据类型做方法参数传递基本类型做方法参数传递,传递的是值,不是变量本身。运行方法:压栈方法执行完毕:弹栈 → 释放内存public class Demo01 {public static void main(String[] args) {int a 10;int b 20;method(a,b…

2026/8/5 11:45:16 阅读更多 →
C_数组_数组与指针关系

C_数组_数组与指针关系

数组对象和首元素很多人学习 C 语言时,都会听过一句话:数组就是指针。也有人说:数组名就是一个指针。甚至有人说:数组和指针完全一样。答案是否定的。数组不是指针。指针也不是数组。这是从 C89 到 C23 都没有改变的核心规则。在这…

2026/8/5 11:45:16 阅读更多 →
网络设备接入交换机后Ping不通?从物理到逻辑的完整排查指南

网络设备接入交换机后Ping不通?从物理到逻辑的完整排查指南

1. 问题现象与初步排查“设备接上交换机,灯也亮了,但就是ping不通。” 这几乎是每个网络工程师或IT运维在职业生涯中都会遇到的“经典开局”。它不像服务器宕机那样直接,也不像配置错误那样有明确指向,更像是一个需要你抽丝剥茧的…

2026/8/5 11:45:16 阅读更多 →
5分钟快速恢复QQ空间历史记录:GetQzonehistory终极指南

5分钟快速恢复QQ空间历史记录:GetQzonehistory终极指南

5分钟快速恢复QQ空间历史记录:GetQzonehistory终极指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否担心QQ空间里那些承载青春记忆的说说会随着时间流逝而消失&…

2026/8/5 11:44:16 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击: https://kaifayun.com 第一章:AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用,其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →