新闻详情

新闻详情

首页 / 资讯中心 / 详情

10_自动微分模块与计算图[pytorch框架与神经网络基础]

发布时间:2026/11/10 19:32:42来源:尧图网络
10_自动微分模块与计算图[pytorch框架与神经网络基础]
8.自动微分模块训练神经网络时最常用的算法就是反向传播。在该算法中参数(模型权重)会根据损失函数关于对应参数的梯度进行调整。为了计算这些梯度PyTorch内置了名为 torch.autograd 的微分引擎(自动微分模块)。一般来说,pytorch中模型的计算流程为前向计算 → 构建计算图 → 计算损失 → 反向传播 → 自动微分 → 优化器更新参数 自动微分负责“怎么算梯度” 反向传播是计算梯度的一种高效算法利用链式法则从后往前算 优化器拿到梯度后负责“怎么更新参数”8.1 前向传播与计算图的构建前向传播把输入数据xxx沿着神经网络层层递进,经过所有参数和激活函数的运算,最终得到输出结果的过程。计算图是一个有向无环图(DAG),由两部分组成节点(Nodes)张量(数据),参数(w和b)或操作(如加、减、乘、卷积、激活函数)。pytorch中,直接创建的张量被称为叶子节点(Leaf Tensor)边(Edges)代表数据的流向(即张量作为输入,经过运算,产生输出)。每执行一次前向传播,就是遍历一次模型代码,同时pytorch.autograd会遍历其中的所有数学运算,构建出计算图,在调用backward()时提供精确的“导数路线”。requires_grad和梯度累计你可以在张量初始化时指定requires_gradTrue或调用.retain_grad()来声明此张量数据是可训练的参数,对每个requires_gradTrue的叶子节点(Leaf Tensor),都会关联一个AccumulateGrad节点。同时,对requires_gradTrue具有传播性与其有关的张量都具备requires_gradTrue。每个requires_gradTrue的叶子节点(Leaf Tensor)其梯度都会被保存在内存中。AccumulateGrad结点是pytorch中自动微分引擎中一个特殊的、底层的 Function节点它专门负责接收反向传播来的梯度并将其累加到对应叶子张量的.grad属性中,直到调用zero_grad()才会将梯度清零。下图展示了一个简单的计算图,其数学表达式如下lossMSE(y,z),zw∗xb loss MSE(y,z) \quad ,z w * x blossMSE(y,z),zw∗xb在这个例子中,www和bbb的梯度计算方式为∂l∂w∂l∂z⋅∂z∂w2(w∗xb−y)∗x∂l∂b∂l∂z⋅∂z∂b2(w∗xb−y)∗1 \begin{align} \frac{\partial l}{\partial w} \frac{\partial l}{\partial z} \cdot \frac{\partial z}{\partial w} 2(w * x b - y) * x \\ \\ \frac{\partial l}{\partial b} \frac{\partial l}{\partial z} \cdot \frac{\partial z}{\partial b} 2(w * x b - y) * 1 \end{align}​∂w∂l​∂z∂l​⋅∂w∂z​2(w∗xb−y)∗x∂b∂l​∂z∂l​⋅∂b∂z​2(w∗xb−y)∗1​​其中,∂l∂z2(z−y)\frac{\partial l}{\partial z} 2(z - y)∂z∂l​2(z−y),被称为顶层误差信号。并在后续计算当中被传递到∂l∂w\frac{\partial l}{\partial w}∂w∂l​和∂l∂b\frac{\partial l}{\partial b}∂b∂l​之中。如定义初始常量x5,y0,w1,b3x5,y0,w1,b3x5,y0,w1,b3,可以得到其计算图的自顶向下的拓扑结构loss (grad_fnMseLossBackward0) ← 均方误差结点 (关联了z和y以及MSE的求导规则) └── z (grad_fnAddBackward0) ← 加法节点 (关联了b和w*x以及加法求导规则) ├── (左) MulBackward0 ← 乘法节点 (关联了w和x以及乘法求导规则) │ ├── w (叶子, AccumulateGrad) │ └── x (常量, 不追踪) └── (右) b (叶子, AccumulateGrad)其程序及pytorch的计算过程如下# 当X为标量时梯度的计算defscaler_grad_compute():xtorch.tensor(5)# 目标值: labelytorch.tensor(0.)# 设置要更新的权重和偏置的初始值wtorch.tensor(1,requires_gradTrue,dtypetorch.float32)btorch.tensor(3,requires_gradTrue,dtypetorch.float32)# 设置网络的输出值zw*xb# 设置损失函数,并进行损失的计算losstorch.nn.MSELoss()lossloss(z,y)# 自动微分loss.backward()# 打印 w,b 变量的梯度# backward 函数计算的梯度值会存储在张量的 grad 变量中print(fw-{w.grad})print(fb-{b.grad})scaler_grad_compute()计算顶层误差:∂l∂z2(z−y)2∗(wxb−y)16\frac{\partial l}{\partial z} 2(z - y) 2 * (wx b - y) 16∂z∂l​2(z−y)2∗(wxb−y)16,并传递到AddBackward0(加法)节点中,此时loss、y、MSE被“移出”计算图。AddBackward0把误差信号复制成两份因为加法节点的梯度分流(左) 乘法结点根据乘法求导法则计算出www的梯度∂l∂w∂l∂z⋅∂z∂w16∗580\frac{\partial l}{\partial w} \frac{\partial l}{\partial z} \cdot \frac{\partial z}{\partial w} 16 * 5 80∂w∂l​∂z∂l​⋅∂w∂z​16∗580,并传递给其叶子节点(右) 计算bbb的梯度∂l∂b∂l∂z⋅∂z∂b16∗116\frac{\partial l}{\partial b} \frac{\partial l}{\partial z} \cdot \frac{\partial z}{\partial b} 16 * 1 16∂b∂l​∂z∂l​⋅∂b∂z​16∗116,由于其requires_gradTrue且为叶子节点(Leaf Tensor),其梯度都会被保存在内存中 b.grad16。此时、*、x(requires_gradFalse)被“移出”计算图,而w节点接收上层的梯度并保存 w.grad 80。ad16。此时、*、x(requires_gradFalse)被“移出”计算图,而w节点接收上层的梯度并保存 w.grad 80。这种通过计算图拓扑的方法简化了计算梯度的复杂度。这就是反向传播算法(Back Propagation)的核心思想。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/10 4:49:37

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/9 8:37:19

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/10 9:14:31

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/10 1:10:29

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/10 15:15:31

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/10 17:14:10

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉