当前位置: 首页 > news >正文

深入解析:Pytorch框架笔记

微积分

对于一个多元函数,我们将其输入简化为一个一个向量。
在这里插入图片描述
说明:
对于所有A∈Rm×n\mathbf{A} \in \mathbb{R}^{m \times n}ARm×n,都有∇xAx=A⊤\nabla_{\mathbf{x}} \mathbf{A} \mathbf{x} = \mathbf{A}^\topxAx=A
Ax\mathbf{A} \mathbf{x}Ax是一个向量,而对于向量的求导是一个矩阵(因为这里向量的每个维度上都是一个多元函数),经过简单计算可以知道正好为A⊤\mathbf{A}^\topA.

对于所有A∈Rn×n\mathbf{A} \in \mathbb{R}^{n \times n}ARn×n,都有∇xx⊤Ax=(A+A⊤)x\nabla_{\mathbf{x}} \mathbf{x}^\top \mathbf{A} \mathbf{x} = (\mathbf{A} + \mathbf{A}^\top)\mathbf{x}xxAx=(A+A)x
在这里插入图片描述

∇x∥x∥2=∇xx⊤x=2x\nabla_{\mathbf{x}} \|\mathbf{x} \|^2 = \nabla_{\mathbf{x}} \mathbf{x}^\top \mathbf{x} = 2\mathbf{x}xx2=xxx=2x
在上面这个公式中将E\mathbf{E}E带入A\mathbf{A}A,即可得到这个这个式子。

自动微分

为张量建立梯度

由上面数学推导可知,标量函数对一个向量求导的结果就是它的梯度。梯度的形状和这个用来求导的向量的形状是一样的。
深度学习框架为了存贮自动微分的结果,会为用于求导的张量(一维的话是向量)开辟一个同样的大小的内存空间

from mxnet import autograd, np, npx
npx.set_np()
x = np.arange(4.0)
# 通过调用attach_grad来为一个张量的梯度分配内存
x.attach_grad()
# 在计算关于x的梯度后,将能够通过'grad'属性访问它,它的值被初始化为0
x.grad

上述代码就是为张量分配了一个梯度。

为被求导函数建立计算图

现在的深度学习框架一般使用反向传播的方法计算梯度。而使用到的工具就是计算图。
框架会为被求导的函数构造一个计算图。

# 把代码放到autograd.record内,以建立计算图
with autograd.record():
y = 2 * np.dot(x, x)
y

计算图的作用如下:
在这里插入图片描述
当需要求梯度时,程序就从后往前遍历计算图:
在这里插入图片描述
图的结点时操作,边是数据。程序会根据操作类型进行求导。
比如上图中遇到的第一个操作是乘法,就会保留c和d的因子。然后继续跟着图的反向传播继续链式求导。
最终会将结果保存在梯度当中。

非标量函数求梯度

比如向量函数,矩阵函数。
向量函数:
在这里插入图片描述

计算分离

对于被求导的函数,可以将其部分作为一个整体冻结,求导的时候只作为一个常数。
在这里插入图片描述

Python控制流的梯度计算

在框架中,不仅能对数学上的函数做自动微分,还能对变成中的函数(python控制流如条件和循环)做自动微分。
在这里插入图片描述
这里构造了一个分段线性的函数,这不是个连续的函数,其每一段都是y = kx,但不同的区间中k不一样。
由此可以像最后这样表达来验证求导是不是有效的。

框架查询

查函数和类

import torch
print(dir(torch.distributions))

函数和类的用法

help(torch.ones)
http://www.zskr.cn/news/12797.html

相关文章:

  • elasticsearch安装插件 - 实践
  • P1731 生日蛋糕 做题记录
  • 详细介绍:【MySQL】MySQL数据库入门指南
  • 深入解析:【Linux】UDP 网络编程
  • Linux目录下有100百万个文件,如何快速删除
  • JavaDay10
  • 【C++】内存管理 - 指南
  • 介绍自己
  • pycharm更换国内源
  • MySQL中的空间碎片率计算分析 - 指南
  • 0voice-2.2.1-服务器百万并发实现
  • 关于SeaTunnel 达梦数据迁移无法自动建表的问题
  • python+springboot+uniapp基于微信小程序的巴马旅居养老系统 旅游养老小程序 - 详解
  • 深入解析:六维力传感器材质选择:影响性能与精度的关键因素
  • 按键精灵安卓/ios辅助工具,脚本开发新手教程ui界面介绍 - 教程
  • 2025年AI大模型赋能智能座舱研究报告:技术、资本与市场|附20+份报告PDF、数据仪表盘汇总下载
  • 专题:2025年AI Agent智能体行业洞察报告|附110+份报告PDF、数据仪表盘汇总下载
  • MYSQL: 时间戳演示
  • 自动化测试用例结构分析
  • 通过mcp-use client 调用mcp 服务方法
  • 详细介绍:**Qwen3-Omni(多模态:文本/图像/音频/视频)**的安装与使用速通手册
  • 谷歌新款具身智能模型 Gemini Robotics 1.5 和 Gemini Robotics-ER 1.5
  • 完整教程:测试自动化教程:Parasoft如何流重定向与单元测试自动化
  • 实用指南:Java 面试 -Java基础
  • 基于 Nim 的英文数字验证码识别工具实现
  • AI信任心理学:构建可信赖人工智能系统的实用指南
  • 模仿Teamcenter(UIHealthDetector) 实现 系统托盘
  • 一个纯净的自动微分框架—autograd
  • 浅谈并分享一种较为高效的学习方法
  • 解决Python requests库POST请求参数顺序问题