pytorch torch.linalg模块介绍

ops/2025/2/11 0:21:50/

torch.linalg 是 PyTorch 的 线性代数 (Linear Algebra) 子模块,它提供了许多 高效的矩阵操作和分解方法,类似于 NumPy 的 numpy.linalg 或 SciPy 的 scipy.linalg,但针对 GPU 加速和自动微分 进行了优化。

1. 矩阵基本运算

矩阵乘法
  • torch.linalg.matmul:执行两个张量的矩阵乘法。它可以处理多种情况,包括批量矩阵乘法。
import torch# 创建两个矩阵
A = torch.tensor([[1, 2], [3, 4]])
B = torch.tensor([[5, 6], [7, 8]])
result = torch.linalg.matmul(A, B)
print(result)
矩阵转置
  • torch.linalg.t:用于计算矩阵的转置。
import torchA = torch.tensor([[1, 2], [3, 4]])
transposed_A = torch.linalg.t(A)
print(transposed_A)

2. 矩阵分解

奇异值分解(SVD)

import torchA = torch.tensor([[1, 2], [3, 4]], dtype=torch.float32)
U, S, Vh = torch.linalg.svd(A)
print("U:", U)
print("S:", S)
print("Vh:", Vh)
QR 分解
  • torch.linalg.qr:将矩阵分解为一个正交矩阵  和一个上三角矩阵  的乘积,即 A= QR
import torchA = torch.tensor([[1, 2], [3, 4]], dtype=torch.float32)
Q, R = torch.linalg.qr(A)
print("Q:", Q)
print("R:", R)

3. 矩阵的特征值和特征向量

计算特征值和特征向量
  • torch.linalg.eig:用于计算方阵的特征值和特征向量。对于实对称矩阵,可以使用 torch.linalg.eigh以获得更高的效率。
import torchA = torch.tensor([[1, 2], [2, 1]], dtype=torch.float32)
eigenvalues, eigenvectors = torch.linalg.eig(A)
print("Eigenvalues:", eigenvalues)
print("Eigenvectors:", eigenvectors)

4. 求解线性方程组

import torch# 系数矩阵 A
A = torch.tensor([[3, 1], [1, 2]], dtype=torch.float32)
# 常数向量 b
b = torch.tensor([9, 8], dtype=torch.float32)
x = torch.linalg.solve(A, b)
print("Solution x:", x)

5. 矩阵的范数计算

计算矩阵的范数
  • torch.linalg.norm:用于计算矩阵或向量的范数,支持多种范数类型,如 1 - 范数、2 - 范数、无穷范数等。
import torchA = torch.tensor([[1, 2], [3, 4]], dtype=torch.float32)
norm_2 = torch.linalg.norm(A, ord=2)
print("2 - norm of A:", norm_2)

torch.linalg 模块为 PyTorch 用户提供了一套完整的线性代数工具,这些功能在机器学习、深度学习、计算机图形学等领域都有广泛的应用,例如在优化算法、降维技术、图像和信号处理等方面。


http://www.ppmy.cn/ops/157393.html

相关文章

后台管理系统网页开发

CSS样式代码 /* 后台管理系统样式文件 */ #container{ width:100%; height:100%; /* background-color:antiquewhite;*/ display:flex;} /* 左侧导航区域:宽度300px*/ .left{ width:300px; height: 100%; background-color:#203453; display:flex; flex-direction:column; jus…

活动预告 | 为 AI 新纪元做好准备:助力安全的业务转型

课程介绍 随着现代办公模式的不断演变和 AI 技术的迅速发展,企业在享受效率提升的同时,也面临着信息安全与数据保护的严峻挑战。在利用 AI 技术释放业务潜力的同时,如何确保数据质量与安全已成为企业发展的关键议题。 在本次线上课程中&…

如何在 Java 应用中实现数据库的主从复制(读写分离)?请简要描述架构和关键代码实现?

在Java应用中实现数据库主从复制(读写分离) 一、架构描述 (一)整体架构 主库(Master) 负责处理所有的写操作(INSERT、UPDATE、DELETE等)。它是数据的源头,所有的数据变…

基于Flask的当当网畅销图书榜单可视化分析系统的设计与实现

【FLask】基于Flask的当当网畅销图书榜单可视化分析系统的设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统系统采用Python语言结合Flask框架开发,利用Pandas、NumP…

子集(力扣78)

这道题与之前做过的回溯问题最大的区别就是,我们在每一层递归都可以得到一个结果,也就是题目中所说的子集,而之前的题是在终止条件才将结果存入二维数组。需要注意的是,每一层递归中将结果存入二维数组的代码段需要放在终止条件之…

b s架构 网络安全 网络安全架构分析

目录 文章目录 目录网络安全逻辑架构 微分段(Micro-segmentation)防火墙即服务(Firewall asa Service ,FWaaS)安全网络网关(Secure web gateway)净化域名系统(Sanitized Domain Na…

pptx 提取 ppt 内容

pptx 提取 ppt 内容 安装依赖库 https://github.com/scanny/python-pptx pip install python-pptx 代码实现 from io import BytesIO from pptx import Presentationdef extract_shape(shape):if shape

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_ssl_version 函数

定义 event\ngx_event_openssl.h 中: #if (OPENSSL_VERSION_NUMBER > 0x10100001L)#define ngx_ssl_version() OpenSSL_version(OPENSSL_VERSION)#else#define ngx_ssl_version() SSLeay_version(SSLEAY_VERSION)#endif #if (OPENSSL_VERSION_NUMBER…