首页 > 其他分享 >pytorch自动微分

pytorch自动微分

时间:2024-11-02 14:59:08浏览次数:3  
标签:partial pmatrix 梯度 2x 微分 pytorch 自动 frac grad

求导是几乎所有深度学习优化算法的关键步骤,因为在优化损失函数时会用反向传播,即使参数朝着梯度下降的方向调整,求梯度即求偏导。虽然求导的计算很简单,但对于复杂的模型,手动进行更新很容易出错。 Pytorch通过自动微分来加快求导。 他会先构建一个计算图(computational graph), 来跟踪计算是哪些数据通过哪些操作组合起来产生输出。 自动微分使系统能够随后反向传播梯度。 反向传播(backpropagate)意味着跟踪整个计算图,填充关于每个参数的偏导数。 下面看一个简单的例子,以及如何使用pytorch自动计算偏微分 $$ y=2x^Tx \\ 实际上y就是个二次型函数\\ y=2(x_1,x_2,x_3,x_4)^T(x_1,x_2,x_3,x_4)=2(x_1^2+x_2^2+x_3^2+x_4^2)=2x_1^2+2x_2^2+2x_3^2+2x_4^2 \\ \newcommand{\y}{(2x_1^2+2x_2^2+2x_3^2+2x_4^2)} 那么x的梯度就是\frac{ \partial y }{ \partial x_i }= \begin{pmatrix} \frac{ \partial y }{ \partial x_1 } \\ \frac{ \partial y }{ \partial x_2 } \\ \frac{ \partial y }{ \partial x_3 } \\ \frac{ \partial y }{ \partial x_4 } \\ \end{pmatrix}= \begin{pmatrix} \frac{ \partial \y }{ \partial x_1 } \\ \frac{ \partial \y }{ \partial x_2 } \\ \frac{ \partial \y }{ \partial x_3 } \\ \frac{ \partial \y }{ \partial x_4 } \\ \end{pmatrix}= \begin{pmatrix} 4x_1\\ 4x_2\\ 4x_3\\ 4x_4 \end{pmatrix} $$

 

import torch

x = torch.arange(4.0,requires_grad=True)
print(f"x:{x}\nx的梯度:{x.grad}")# 梯度默认值是None
y = 2 * torch.dot(x, x)#dot()用于求内积
y.backward()
x.grad

输出结果为

tensor([0., 1., 2., 3.], requires_grad=True) 
x的梯度:None
tensor([ 0.,  4.,  8., 12.])

实际上这个梯度手动计算也非常容易

标签:partial,pmatrix,梯度,2x,微分,pytorch,自动,frac,grad
From: https://www.cnblogs.com/code-laoq/p/18521941

相关文章

  • 项目自动化构建工具——make与Makefile详解
    项目自动化构建工具——make与Makefile详解在软件开发过程中,项目自动化构建是提高开发效率、减少重复劳动、确保构建一致性的重要手段。make和Makefile作为Linux及类Unix系统中不可或缺的自动化构建工具,通过定义清晰的规则和依赖关系,极大地提高了软件项目的构建效率和可维......
  • TAG与RAG实现摘要和标签自动化转化客户反馈意见
    在数据驱动的今天,企业通过评论、调查和社交媒体互动获得大量客户反馈。虽然这些信息可以产生宝贵的洞察力,但也带来了巨大的挑战:如何从大量信息中提炼出有意义的数据。先进的分析技术正在彻底改变我们了解客户情感的方法。其中最具创新性的是表增强生成(TAG)和检索增强生成(RAG)技术,它......
  • 自动化测试中的验证码处理
    在自动化测试中,处理验证码往往是一个挑战,尤其是图形验证码。每次刷新生成的验证码内容各不相同。获取验证码的方法通常有两种:获取验证码图片链接:例如src="http://example.com/getcaptcha/123",但这种方法有时并不可靠,因为通过链接访问的验证码可能与当前页面显示的验证码不一致。......
  • 验证码处理在自动化测试中的应用
    在进行自动化测试时,处理验证码是一项常见的挑战,特别是图形验证码。每次刷新都会生成新的验证码,因此我们可以采用以下两种方法来获取验证码:获取验证码图片链接:例如src="http://example.com/getcaptcha/123",但这种方式并不总是可靠,因为通过链接访问的验证码可能与当前页面显示的不......
  • 【shell脚本】使用 Shell 脚本比较和同步目录:自动化文件管理的利器
    原创日常运维文档在系统管理中,比较两个目录的内容是一项常见任务,尤其在数据备份和服务器维护时,它显得尤为重要。为此,我们可以使用Shell脚本来简化这个过程,实现自动化。下面将对一个名为compare_files.sh的脚本进行详细介绍,该脚本能够比较目录大小并使用rsync检查内容一......
  • Redis伪分布式集群三主三从模式+开启自启动+自动部署集群
    搭建redis集群首先进入一个新目录,创建六个以端口号为名字的子目录$mkdirredis-cluster$cdredis-cluster$mkdir800180028003800480058006添加集群配置文件把编译好的redis.conf文件复制到redis-cluster/800*/文件夹中修改对应文件夹的redis.conf,内容如下:da......
  • prometheus源码分析:discovery自动发现
    discovery支持文件、http、consul等自动发现targets,targets会被发送到scrape模块进行拉取。一.整体框架discovery组件通过Manager对象管理所有的逻辑,当有数据变化时,通过syncChannel将数据发送给scrape组件。discovery组件会为每个Job_name创建一个provider对象,它包含Discover对......
  • D55【python 接口自动化学习】- python基础之模块与标准库
     day55练习:实现求导学习日期:20241101学习目标:模块与标准库--70小试牛刀:如何使用Python为函数求导?学习笔记:需求分析使用第三方模块实现函数求导编写程序并测试#求导fromsympyimportDerivative,Symbolx=Symbol('x')y=x*x+3*x+2d=Derivative(y,x)pri......
  • D52【python 接口自动化学习】- python基础之模块与标准库
    day52标准库学习日期:20241029学习目标:模块与标准库--67标准库:Python默认提供的便携功能有哪些?学习笔记标准库中的常见组件如何通过官方文档学习标准fromurllib.requestimporturlopenwithurlopen('http://www.baidu.com')asf:print(f.read(300)......
  • 基于Java中的SSM框架实现企业办公自动化系统项目【项目源码+论文说明】计算机毕业设计
    基于java中的SSM框架实现企业办公自动化系统演示【内附项目源码+LW说明】摘要互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对小型企业办公信息管理混乱,出错......