【NLP】深入了解PyTorch:autograd

【黑马程序员自然语言处理实战课程】学习笔记---pytorch基础知识和autograd pytorch是一个基于Numpy的科学计算包,向他的使用者提供两大功能作为numpy的替代者,向用户提供GPU强大功能的能力;作为一款深度学习的平台,向用户提供最大的灵活性和速度tensor张量:类似于numpy中的ndarray数据结构,最大区别在于tensor可以利用GPU的加速功能。需要先将torch引用进来。 阅读详情

🍀关于torch.tensor

torch.Tensor是整个package中的核心类如果将属性requires_grad设置为True,它将追踪在这个类上定义的所有操作.当代码要进行反向传播的时候,直接调用.backword()就可以自动计算所有的梯度在这个Tensor上的所有梯度将被累加进属性.grad中

如果想终止一个Tensor在计算图中的追踪回溯,只需要执行.detach()就可以将该Tensor从计算图中撤下,在未来的回溯计算中也不会再计算该Tensor

除了.detach(),如果想终止对计算图的回溯,也就是不再进行方向传播求导数的过程,也可以采用代码块的方式with torch.no_grad():,这种方式非常适用于对模型进行预测的时候,因为预测阶段不再需要对梯度进行计算


🍀关于torch.Function

Function类是和Tensor类同等重要的一个核心类,它和Tensor共同构建了一个完整的类,每一个Tensor拥有一个.grad_fn属性,代表引用了哪个具体的Function创建了该Tensor

如果某个张量Tensor是用户自定义的,则其对应的grad_fn is None.


🍀有关Tensor的操作

import torch
x = torch.ones(3,3)
print(x)
y = torch.ones(2,2,requires_grad=True)
print(y)

运行结果如下
在这里插入图片描述

在具有requires_grad=True的基础上对Tensor执行加法操作

z = y + 2
print(z)

运行结果如下
在这里插入图片描述

print(x.grad_fn)
print(y.grad_fn)

接下来分两种情况,一种是没有进行加法操作,另一种是进行了加法操作,这也就印证了
如果某个张量Tensor是用户自定义的,则其对应的grad_fn is None.

运行结果如下
在这里插入图片描述
在这里插入图片描述

接下来进行比加法操作稍微复杂的操作演示

k = z * z * 2
out = k.mean()
print(k,out)

运行结果如下
在这里插入图片描述
接下来介绍方法.requires_grad_()该方法可以原地改变Tensor的属性.requires_grad的值,如果没有改变默认为FALSE

a = torch.randn(2,2)
a = ((a * 3) / (a - 1))
print(a.requires_grad)
a.requires_grad_(True)
print(a.requires_grad)
b = (a * a).sum()
print(b)
print(b.grad_fn)

运行结果如下
在这里插入图片描述


🍀关于梯度Gradients的介绍

反向传播(Backpropagation)是深度学习中一种用于计算梯度的算法。它可以有效地计算神经网络中各个参数对于损失函数的梯度,进而用于网络参数的更新和优化。

反向传播的过程可以简单分为两个步骤:前向传播和反向传播。

  • 前向传播:在前向传播过程中,输入数据通过神经网络的各个层进行正向计算,得到最终的输出结果。中间每一层的计算都可以看作是一个函数,通过层与层之间的变换(如矩阵乘法、激活函数等),将输入数据逐层传递并进行计算,直至输出层得到最终的预测结果。

  • 反向传播:在反向传播过程中,通过计算链式法则,将输出结果与真实标签之间的误差反向传播回每一层网络,计算每个参数对于损失函数的梯度。这样,就可以得到每个参数的梯度信息,进而根据梯度信息进行参数的更新和优化。

反向传播的基本思路是利用链式法则来计算导数,通过不断链式求导,将误差逐层反向传播回网络的每一个参数。这样可以高效地计算出每个参数对于整个网络输出的误差的贡献程度,从而进行梯度更新和权重调整。

反向传播算法的重要性在于它使得深度神经网络的训练变得可行。通过求解参数的梯度,我们可以使用梯度下降等优化方法对神经网络进行训练,最小化损失函数,使得网络在给定输入上获得更准确的输出。

这里注意,反向传播通过.backword()来实现

关于自动求导的属性设置:可以通过设置.requires_grad=True来执行自动求导,也可以通过代码块的限制来停止自动求导

print(y.requires_grad)
print((y ** 3).requires_grad)
with torch.no_grad():
    print((x ** 3).requires_grad)

运行结果如下

在这里插入图片描述

可以通过.detach()进而获得一个新的张量Tensor,且拥有相同的内容但不需要自动求导

print(y.requires_grad)
z = y.detach()
print(z.requires_grad)
print(y.eq(z).all())

运行结果如下
在这里插入图片描述

🍀总结

本篇文章是在b站学习后完成的,若有人想了解视频可以点击Python人工智能20个小时玩转NLP自然语言处理【黑马程序员】

挑战与创造都是很痛苦的,但是很充实。

PyTorch Autograd 核心机制与工程实践深度解析 Autograd 是 PyTorch 实现自动微分的底层引擎,其本质是基于动态计算图(DAG)的链式法则运行时调度系统。它通过 Tensor 的 requires_grad 标记、Function 的前向/反向原子封装,以及隐式构建的 grad_fn 指针图,将数学求导转化为可追踪、可复现的内存操作。这一机制不仅支撑了梯度下降等优化过程的技术可行性,更直接决定了模型训练的显存效率、调试可观测性与分布式同步行为。在 CV/NLP 工业级模型开发中,Autograd 的控制原语(如 torch.no_grad、 阅读详情

相关推荐

PyTorch Autograd计算图与反向传播原理深度解析

计算图是深度学习框架实现自动微分的核心抽象,本质为运行时动态构建的有向无环图(DAG),承载前向计算路径与梯度传播逻辑。其原理基于链式法则的深度优先遍历,由Autograd引擎驱动,在`loss.backward()`触发后逐节点调用`Function.backward`完成梯度累积。该机制赋予PyTorch调试直观、控制流原生、内存按需等工程优势,但也带来`in-place`操作破坏图、`cat`/`stack`梯度路径分裂、`requires_grad`传播异常等典型陷阱。理解计算图生命周期与`grad

weixin_34377919的博客 617

PyTorch底层运行机制全景解析:从tensor内存到autograd计算图

PyTorch不是API集合,而是一套以tensor为基石、autograd为引擎、nn为封装、dataloader为输入管道、distributed为扩展层的动态运行时系统。其核心在于Python原生控制与CUDA底层协同——tensor本质是带元数据的内存地址,autograd通过拓扑排序实现反向传播,而torch.compile则在FX图层面融合算子优化性能。这种设计赋予研究者极致调试自由,但也要求开发者理解显存分配、梯度累加、多进程数据加载等真实工程约束。本文聚焦tensor内存布局、autogra

weixin_30788619的博客 383

PyTorch NLP入门:从环境搭建到第一个文本分类模型实战

深度学习框架是构建人工智能应用的核心工具,其通过自动微分和计算图机制,让开发者能够高效地设计和训练复杂的神经网络模型。PyTorch以其直观的动态计算图和Pythonic的设计哲学,在学术研究和工业实践中广受欢迎,尤其适合自然语言处理等序列建模任务。在NLP领域,从基础的词嵌入表示到复杂的Transformer架构,PyTorch提供了从张量操作、自动求导到高级神经网络模块的完整支持。本文将结合**环境搭建**和**文本分类**这两个核心实践场景,详细解析如何利用PyTorch的Tensor、Autogra

weixin_30536861的博客 249

Pytorch教程:Autograd基础

PyTorch的Autograd特征可以让PyTorch灵活快速的构建机器学习项目。autograd可以实现快速和容易的多重偏微分(梯度)计算。偏微分计算时反向传播神经网络学习的核心。autograd的可以在运行时动态追踪计算,这意味着如果模型有决策分支、或者有在运行时之前长度未知的循环,仍然可以正确的追踪计算,得到正确的梯度进而驱动学习。并且,当模型是通过python构建的,在计算梯度时,PyTorch的autograd比那些依赖于对更加严格结构的模型进行静态分析的框架提供了更多的灵活性。

... 2143

深入浅出卡尔曼滤波器算法

深入浅出讲解卡尔曼滤波器的工作原理及其公式推导,讨论卡尔曼滤波器的核心公式所代表的意义及个人的理解。

m0_37835056的博客 1365

CiteSpace基础操作(CNKI数据的导入分析)(一)

1 Cite Space简单介绍 2 文献导入 2.1 打开知网,选择高级检索

m0_50990607的博客 5万+

pytorch-autograde-计算图

定义requires_grad 如果所有输入有任意子单元有requires_grad,则输出单元则也相应为requires_grad。 import torch x = torch.randn(5, 5) y = torch.randn(5, 5) z = torch.randn((5, 5), requires_grad=True) a = x + z print(a.requires_grad) 对应的,则不需要进行梯度更新的则进行freeze。 model = torchvision.models

m0_37400316的博客 742

EG800K 4G模块AT指令避坑指南:让你的STM32物联网项目稳定连接云端

本文详细解析了EG800K 4G模块在STM32物联网项目中的AT指令应用避坑指南,涵盖从底层协议到云端稳定的全链路优化策略。通过实战案例和防护机制,帮助开发者解决常见通信陷阱,提升云端通信的稳定性和效率。

weixin_26834815的博客 288

深入理解pytorch autograd

学习下,转自 https://www.cnblogs.com/hellcat/p/8449031.html https://www.cnblogs.com/hellcat/p/8449801.html https://www.cnblogs.com/hellcat/p/8453615.html 谢谢原作者的辛苦总结。 (上) 在PyTorch中计算图的特点可总结如下: autogra...

cs_softwore的专栏 2204

轻量级NAS的隐秘战场:比特米盒CumeBox2与CasaOS的生态融合实践

本文探讨了比特米盒CumeBox2轻量级NAS设备与CasaOS操作系统的生态融合实践。通过硬件选型、系统部署、性能优化和应用场景分析,展示了如何将CumeBox2与CasaOS深度整合,打造经济实用的家庭数据管理中心,特别适合入门级用户和小型办公环境。

rl6adventurer的博客 895

Obsidian笔记同步实战:基于Git的私有化部署与自动化管理

本文详细介绍了如何利用Git为Obsidian笔记构建私有化、自动化且免费的同步方案。通过安装配置Git与Obsidian-git插件,结合Gitee等远程仓库,实现笔记的版本管理、多设备同步与自动备份,打造安全可靠的知识管理体系。

y7z8a的博客 272

PINN解偏微分方程--程函方程

程函方程在地球物理学中对于走时场正演和射线追踪等具有很重要的意义。本文将简单介绍如何利用基于物理信息的神经网络(Physics-informed Neural Network, 简称PINN)解程函方程。

baidu_38662087的博客 7846

Howland电流源电路:从理论到实践的深度解析与优化策略

本文深度解析了Howland电流源电路的工作原理,从经典四电阻架构的“虚短”“虚断”分析,到其实现宽带恒流输出的理论优势。重点剖析了实践中因电阻精度、运放参数及PCB布局导致的性能瓶颈,并提供了引入第五电阻、优化运放选型等关键优化策略,旨在将输出阻抗从kΩ级提升至MΩ级,以满足精密测量与传感器驱动等应用需求。

weixin_29243063的博客 442

PyTorch 1.0 基础教程(2):autograd: 自动微分器

PyTorch 1.0 基础教程(2):autograd: 自动微分器张量梯度更多参考 所有在PyTorch神经网络的核心是autograd包. 让我们来简要地观察一下这个,我们将先去训练我们的神经网络. autograd包为所有在张量上的操作提供自动微分.auto是一个通过运行来定义(define-by-run)的框架,意味着你的反向传播有你运行的代码定义,同时,每个迭代都可以不一样. 接下来我...

gukedream的专栏 3296

SAP CAP 编程模型简介

官网 CAP 是用于构建企业级服务和应用程序的语言、库和工具框架。它引导开发人员沿着经过验证的最佳实践和大量现成的解决方案来应对重复性任务的“黄金之路”。 基于 CAP 的项目受益于对领域的主要关注。我们没有深入研究过于技术性的学科,而是专注于在快速变化的云技术世界中加速开发和保护投资。 CAP 框架融合了经过验证和广泛采用的开源和 SAP 技术,如下图所示。 在开源技术之上,CAP主要增加了: 核心数据服务 (CDS) 作为我们用于域模型和服务定义的通用建模语言。 用于 Node.js 和 Ja

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1547

锂电池SOH预测 | 基于BP神经网络的锂电池SOH预测(附matlab完整源码)

锂电池SOH预测 | 基于BP神经网络的锂电池SOH预测(附matlab完整源码)

天天酷科研的博客 1114

PyTorch 之 简介、相关软件框架、基本使用方法、tensor 的几种形状和 autograd 机制

PyTorch 是一个基于 Torch 的 Python 开源机器学习库,用于自然语言处理等应用程序。它主要由 Facebook 的人工智能小组开发,不仅能够实现强大的 GPU 加速,同时还支持动态神经网络,这一点是现在很多主流框架如 TensorFlow 都不支持的。PyTorch 提供了两个高级功能:(1) 具有强大的 GPU 加速的张量计算(如 Numpy 库等)。(2) 包含自动求导系统的深度神经网络。

每天进步一点点! 3239

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Pytorch教程04 - pytorch中的autograd

Pytorch教程04 - pytorch中的autograd

山顶极客 1176

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

1.语法与入门-pytorch与自然语言处理

Python人工智能20个小时玩转NLP自然语言处理【黑马程序员】笔记

qq_42035862的博客 1912

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

PyTorch架构深度解析:从Tensor、Autograd到模型部署与性能调优

深度学习框架是现代人工智能应用的核心基础设施,其设计理念直接影响着模型开发、训练与部署的效率。理解框架的底层架构,是掌握其高级用法和进行性能优化的关键。PyTorch作为主流的动态图框架,其核心设计围绕Tensor(张量)和Autograd(自动微分)两大基石展开。Tensor不仅是多维数组,其内存布局、设备管理和视图机制深刻影响着计算性能;而Autograd则通过动态构建计算图,实现了灵活的梯度反向传播,这是模型训练得以自动化的原理。掌握这些基础概念,对于解决实际工程问题,如内存溢出(OOM)、训练不稳定

weixin_30629653的博客 424

PyTorch工业实战:动态图、Autograd与分布式训练深度解析

PyTorch作为主流深度学习框架,其核心并非仅是张量运算接口,而是一套支持可微分编程的动态计算图系统。它以Autograd实现梯度的可组合、可拦截计算,以nn.Module构建状态与逻辑耦合的模型中枢,以Tensor抽象内存、设备与精度三维统一视图。这种设计赋予模型在变长序列、异构数据、实时推理等工业场景中天然适应性,支撑智能质检、医疗影像分割、金融时序预测等落地任务。尤其在多卡分布式训练中,DDP通过AllReduce通信范式实现高线性加速比,配合CUDA内存管理、混合精度与torch.compile等

weixin_30644369的博客 400

PyTorch 的 Autograd详解

每天给你送来NLP技术干货! 地址 |https://zhuanlan.zhihu.com/p/69294347 作者 |xiaopl@知乎 编辑| 极市平台PyTorch 作为一个深度学习平台,在深度学习任务中比 NumPy 这个科学计算库强在哪里呢?我觉得一是 PyTorch 提供了自动求导机制,二是对 GPU 的支持。由此可见,自动求导 (autograd) ...

zenRRan的博客 248

PyTorch入门(五)——autograd与逻辑回归

自动求导和逻辑回归autograd——自动求导系统torch.autograd.backwardtorch.autograd.grad注意逻辑回归 autograd——自动求导系统 torch.autograd.backward torch.autograd.backward(tensor, grad_tensors=None, retain_graph=None, ...

NLP翟 284

初步了解PyTorch中的Tensor与操作

欢迎阅读本文,我们将深入PyTorch中的Tensor和操作进行探讨。本文将从背景入手,逐步深入到核心概念、算法原理、最佳实践、应用场景等方方面面。 背景介绍 PyTorch是一个流行的深度学习库,它建立在Torch库之上,提供了动态计算图和自动微分功能。Tensor是PyTorch中的基本数据结构,类似于NumPy中的ndarray。Te

AI架构师小马 468

深入了解PyTorch:起源、优势、发展与安装指南

PyTorch是一个由Facebook开发的开源深度学习框架,以其动态计算图、直观API和强大社区支持而闻名。自2016年发布以来,PyTorch快速发展,已成为研究领域的主流工具。其核心组件包括支持GPU加速的Torch.Tensor、自动微分系统Autograd、神经网络模块nn,以及针对视觉、文本和音频处理的扩展库。PyTorch的优势在于研究灵活性,同时通过TorchScript等工具支持生产部署。安装方式多样,支持Windows/Linux/macOS平台,可通过pip或conda安装。

叶子的博客 789

深入了解 Python 中的 PyTorch:灵活高效的深度学习框架

PyTorch是一个基于 Python 的开源机器学习库,专为深度学习任务设计。它以张量(Tensor)计算和自动微分(Autograd)为核心,提供了高效灵活的方式来构建、训练和部署神经网络。与 NumPy 类似,PyTorch 的Tensor支持 GPU 加速,同时内置了丰富的神经网络模块(torch.nn),使得从研究到生产的整个流程变得高效而自然。PyTorch凭借其灵活性、易读性和强大的社区支持,已经成为现代深度学习开发的事实标准。无论是学术研究还是工业应用,它都展现出卓越的表现力和扩展性。

weixin_40266856的博客 6836
上一篇: 六、介绍BeautifulSoup库:Python网络爬虫利器
下一篇: K最近邻算法:简单高效的分类和回归方法
小馒头学python
小馒头学python 优质创作者: python技术领域 优质创作者: python技术领域
博客等级 码龄4年 1万+粉丝 252原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小馒头学python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值