pytorch线性代数的基本操作

news/2024/5/1 14:38:50/文章来源:https://blog.csdn.net/weixin_45247019/article/details/126916502

线性代数的基本操作

在这里插入图片描述

标量由只有一个元素的张量表示

import torch
x=torch.tensor([3.0])
y=torch.tensor([2.0])
x+y,x*y,x/y,x**y

向量视为标量值的组成 通过张量的索引来访问任一元素

x=torch.arange(4)
x,x[3]
#张量的长度
len(x)
#张量的形状
x.shape

对称矩阵 A=AT

B=torch.tensor([[1,2,3],[2,0,5],[3,5,5]])
#B.T代表B的转秩
B,B==B.T

给定具有相同形状的任何两个张量,任何按元素二元运算的结果都将是相同形状的张量

A=torch.arange(20,dtype=torch.float32).reshape(5,4)
# 代表对A的克隆
B=A.clone()
B,A+B

两个矩阵的按元素乘法称为哈达玛积,每个元素相乘

A*B

标量与向量的+ *

a=2
X=torch.arange(24).reshape(2,3,4)
a+X,a*X

计算其元素的和

x=torch.arange(4,dtype=torch.float32)
x,x.sum()

计算任意形状张量的元素和

A=torch.arange(20*2).reshape(2,5,4)
A,A.shape,A.sum()

指定求和汇总张量的轴

A_sum_axis0=A.sum(axis=0)
A_sum_axis0,A_sum_axis0.shape

一个与求和相关的量是平均值

A=torch.arange(20*2,dtype=torch.float32).reshape(2,5,4)
A.mean(),A.sum()/A.numel()
#也可以按照某个维度求平均值
A.mean(axis=0),A.sum(axis=0)/A.shape[0]

一个与求和相关的量是平均值

sum_A=A.sum(axis=1,keepdims=True)
sum_A
sum_A.shape
A/sum_A

某个轴进行累加求和

A,A.cumsum(axis=0)

点积是相同位置的按元素乘积的和

y=torch.ones(4,dtype=torch.float32)
x=torch.arange(4,dtype=torch.float32)
x,y,torch.dot(x,y)
#也可以通过相乘相加的方式
torch.sum(x*y)

矩阵向量积Ax是一个长度为m的列向量,其ith元素是点积aix

A=torch.arange(20).reshape(5,4)
B=torch.arange(4)
A.shape,B.shape,torch.mv(A,B)

矩阵乘法AB 看作是简单地执行m次矩阵向量积,并将结果拼接在一起 Am x n*Bn x p

B=torch.arange(8).reshape(4,2)
torch.mm(A,B)

L2范数是向量元素平方和的平方根 就是向量的长度

u=torch.tensor([3.0,-4.0])
torch.norm(u)

L1范数是向量元素的绝对值之和

torch.abs(u).sum()

矩阵的弗罗贝尼乌斯范数 是矩阵元素的平方和的平方根

torch.norm(torch.ones(4,9))

自动求导

在这里插入图片描述

假设我们对函数y=2xTx 关于列向量x求导

import torch
x=torch.arange(4.0)
x

在我们计算y对x的梯度(求导)之前 我们需要来存储梯度

x.requires_grad_(True) #等价于x=torch.arange(4.0,requires_grad=True)
x.grad # 默认为None
#对于列向量来说其转置*其等于其自身相互点积 y等于x与x的点积*2 
y=2*torch.dot(x,x)
y
#调用反向传播函数来自动计算y关于x每个分量的梯度
y.backward()
x.grad
x.grad == 4*x

在计算另一个函数的时候 要清楚之前的值 pytorch会累积梯度

#把所有梯度清零
x.grad.zero_()
#另外一个函数
y=x.sum()
y.backward()
x.grad

深度学习中,我们的目的不是计算微分矩阵,而是批量中每个样本单独计算的偏导数之和

x.grad.zero_()
y=x*x
y.sum().backward()
x.grad

将某些计算移动到记录的计算图之外

x.grad.zero_()
y=x*x
u=y.detach()
z=u*xz.sum().backward()
x.grad==ux.grad.zero_()
y.sum().backward()
x.grad==2*x

即使构建函数的计算图需要通过Python控制流,我们仍然可以计算得到变量的梯度

def f(a):b=a*2while b.norm()<1000:b=b*2if b.sum()>0:c=belse:c=100*breturn c#一个随机数 size=()代表一个标量
a=torch.randn(size=(),requires_grad=True)
d=f(a)
d.backward()
a.grad==d/a

作者声明

如有问题,欢迎指正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_9836.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文看懂线性回归(保姆级别 含源码)

来源: AINLPer 微信公众号&#xff08;每日论文干货分享&#xff01;&#xff01;&#xff09; 编辑: ShuYini 校稿: ShuYini 时间: 2022- 9 -18 引言 最近作者网上看了很多关于线性回归的帖子&#xff0c;个人感觉比较乱&#xff0c;所以打算自己整理一版&#xff0c;希望能把…

(41)STM32——外部SRAM实验笔记

目录 学习目标 成果展示 硬件知识 特点 功能框图 读时序 ​编辑写时序 FSMC驱动 寄存器 闪存片选控制寄存器 硬件 配置 代码 总结 学习目标 今天我们要学习的是有关外部SRAM实验&#xff0c;其实F&#xff14;内部也是有一个&#xff11;&#xff19;&#x…

本周大新闻|索尼PS VR2体验首次公开;Meta Quest Pro开箱视频曝光

本周大新闻&#xff0c;AR方面&#xff0c;沃尔玛App加入AR试穿功能&#xff1b;谷歌搜索AR新增60个行星、卫星模型&#xff1b;Niantic宣布与漫威娱乐合作打造新款LBS AR游戏&#xff1b;AR眼镜ActiveLook打通Apple Watch。 VR方面&#xff0c;索尼PS VR2体验首次公开&#x…

2022年笔试知识总结展望

应届生的笔试知识总结&#xff0c;温故而知新&#xff0c;看看知识加深印象&#xff0c;希望学得更好&#xff0c;有个好结果。 目录 1. TCP的拥塞控制 2. position属性 3. [‘1‘, ‘2‘, ‘3‘].map(parseInt) 输出结果 4. 排序算法的稳定性分析 1&#xff09;稳定的排…

事件研究法与其应用(2)---Excel实操步骤

我们借着学习事件研究法的应用,可以用Excel和Stata等软件进行操作。 今天这主要是利用EXCEL计算累积异常收益率。 在正式开展实操之前,我们先回顾一下事件研究法的步骤(尤其是我们写作论文的时候): 事件研究法计算步骤: 1. 获取数据,定义事件期 2.计算估计期间个股与市…

npm yarn 报错

目录npm yarn报错yarn: 无法加载文件 npm yarn报错 yarn: 无法加载文件 win10系统,yarn : 无法加载文件 C:\Users\丽丽小可爱\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 ... 导致此错误的原因是,PowerShell 执行策略,默认设置为Rest…

JSON 数据类型转换工具

简介 本文介绍一款数据类型转换工具&#xff0c;可以将JSON格式数据转换成YAML、MYSQL、XML、TOML、JavaScript等数据类型。 背景 在日常的开发工程中&#xff0c;我们经常使用JSON表达数据&#xff0c;但有些时候我们需要使用YAML、JavaScript等语言表达数据。因此&#xf…

HTML + HTTP请求 +CSS知识点

文章目录HTML1.HTML元素2.HTML页面3.常见元素1&#xff09;文本2&#xff09;多媒体3&#xff09;表单作用与语法常见表单项案例体验4.HTTP请求1&#xff09;请求组成2&#xff09; 请求方式与数据格式get 请求示例post 请求&#xff08;默认格式&#xff09;示例json 请求&…

Python必知必会 os 模块详解

文章目录Python os 模块os模块的常用操作os.path模块os.open()模块Python os 模块 os是“operating system”的缩写&#xff0c;os模块提供各种 Python 程序与操作系统进行交互的接口&#xff0c;使用os模块&#xff0c;一方面可以方便地与操作系统进行交互&#xff0c;另一方…

【SLAM】4李群李代数

文章目录4.1.基础群李代数的引出李代数李代数so(3)\mathfrak{so}(3)so(3)李代数se(3)\mathfrak{se}(3)se(3)4.2.指数与对数映射4.2.1.SO(3)SO(3)SO(3)指数映射4.2.2.SE(3)SE(3)SE(3)的指数映射4.3.李代数求导与扰动模型4.3.1.BCH公式&近似形式4.3.2.李代数求导4.3.4.扰动模…

redis下载与安装(Linux环境下)

用的是阿里云的深度os Linux系统 一&#xff0c;下载 键入命令&#xff1a; wget http://download.redis.io/releases/redis-6.2.1.tar.gz 检查时候有gcc环境 gcc --version 若有gcc环境会有类似于下图的提示 没有则执行&#xff1a; yum install gcc 下载完毕之后&…

JavaEE基础知识

文章目录前言计算机的基本组成CPUCPU运行程序的过程CPU的构造操作系统操作系统功能常见的操作系统操作系统的具体组成操作系统的进程管理(重点)操作系统安排程序进程PCB(进程管理块)进程调度关于进程的几个属性虚拟地址空间线程(thread [θred] )前言 之前已经学过很多的知识,…

企业薪资系统

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a;

PostgreSQL - 基于pg_basebackup实现主从流复制

PostgreSQL - 基于pg_basebackup实现主从流复制1 数据库节点2 安装PostgreSQL2.1 创建postgres用户2.2 安装PostgreSQL3 配置主节点4 配置从节点5 验证主从同步1 数据库节点 节点ip节点角色192.168.163.133主节点192.168.163.134从节点 2 安装PostgreSQL 2.1 创建postgres用户…

计算机网络——数据链路层(滑动窗口协议: 选择重传)(点对点协议 PPP)

目录 滑动窗口协议: 选择重传 选择重传协议 选择重传协议 点对点协议 PPP PPP 的主要特点 PPP 协议有三个组成部分 PPP 协议的帧格式 PPP 有一个 2 个字节的协议字段 透明传输问题 PPP 的字符填充 PPP 的工作状态 滑动窗口协议: 选择重传 选择重传协议 GBN相对简单&a…

【周末闲谈】谈谈数学转码这一年来的体会与反思

——我们走了太远&#xff0c;以至于忘了为何出发 前言 笔者本科读的是数学专业&#xff0c;就是每天和数学分析、高等代数、概率论、随机过程等等这些理论打交道的专业&#xff0c;这个专业出来工作好像一般有两个方向就是金融和计算机&#xff0c;我选择了计算机方向。主要…

2022 第五届 浙江省大学生网络与信息安全竞赛技能赛 预赛 Writeup,5题

文章目录1、Web&#xff1a;nisc_easyweb2、Web&#xff1a;nisc_学校门户网站3、Web&#xff1a;吃豆人吃豆魂4、MISC&#xff1a;好怪哦5、RE&#xff1a;ManyCheck1、Web&#xff1a;nisc_easyweb 题目描述&#xff1a; 打开网站&#xff0c;是一个php的初始页面。 思路…

springboot+微信小程序的点餐系统(开题报告+论文+答辩PPT+源码)

技术架构 SprongBootMysql微信小程序 简介 本点餐小程序是使用Java/JavaScript编程语言开发的&#xff0c;存储数据方面则用到了MySQL数据库。顾客可以使用小程序扫码功能扫描餐厅桌角的二维码就座&#xff0c;也可以点击排号等位由后台工作人员安排就座&#xff1b;通过首页…

通关GO语言10 Context:你必须掌握的多线程并发控制神器

在上一节课中我留了一个作业&#xff0c;也就是让你自己练习使用 sync.Map&#xff0c;相信你已经做出来了。现在我为你讲解 sync.Map 的方法。 Store&#xff1a;存储一对 key-value 值。 Load&#xff1a;根据 key 获取对应的 value 值&#xff0c;并且可以判断 key 是否存在…

GO面试题集锦

GO面试题集锦 目录GO面试题集锦slice 扩容机制slice 为什么不是线程安全的map 底层原理map 扩容机制map 遍历为什么无序map 为什么不是线程安全的Map 如何查找Map 冲突解决方式Map 负载因子为什么是 6.5Map 和 Sync.Map 哪个性能好Channel 底层实现原理Channel 有什么特点Chann…