AI

PyTorch 线性代数运算完整总结

·6 分钟阅读·2158 字

PyTorch 线性代数运算完整总结 的详细笔记

📋 目录

PyTorch 线性代数运算完整总结

核心概念 PyTorch 线性代数运算完整总结,涵盖矩阵运算、向量运算、分解、范数等操作。

1. 基础核心:张量 Tensor(线性代数载体)

PyTorch 全部向量/矩阵运算基于 torch.Tensor,GPU/CPU 无缝切换,对标 numpy,专为深度学习梯度设计。

1.1. 创建向量、矩阵

import torch
# 向量(一维张量)
x = torch.tensor([1.0, 2, 3])
# 矩阵(二维)
A = torch.tensor([[1, 2], [3, 4]])
# 随机矩阵、零矩阵、单位矩阵
rand_mat = torch.randn(3,3)
zero_mat = torch.zeros(2,2)
eye3 = torch.eye(3) # 3阶单位矩阵

2. 基础标量、逐元素运算(Element-wise)

符号直接 + - * / **对应位置元素计算,不是矩阵乘法

  1. 加减:A + B / torch.add(A,B)
  2. 逐元素乘:A * B / torch.mul(A,B)
  3. 逐元素除:A / B
  4. 逐元素幂:A ** 2 平方

3. 矩阵乘法(线性代数核心,区分3种)

3.1. 标准矩阵乘法(矩阵×矩阵 / 矩阵×向量)

数学:A_{m\times k} \cdot B_{k\times n}=C_{m\times n}

# 写法1(推荐)
C = torch.matmul(A, B)
# 写法2 运算符 @
C = A @ B
# 写法3
C = torch.mm(A,B) # 仅支持2维矩阵,不兼容一维向量

3.2. 向量内积(点积 x\cdot y)

x = torch.tensor([1,2,3])
y = torch.tensor([4,5,6])
dot = torch.dot(x, y) # 仅一维向量

3.3. 批量矩阵乘(高维张量,深度学习常用)

torch.bmm():批量3维张量 [batch, m, k] @ [batch, k, n]

4. 矩阵基础变换

  1. 转置 A^T
A.T
torch.t(A)
  1. 逆矩阵 A^{-1}(方阵可逆)
A_inv = torch.inverse(A)
# A @ A_inv = 单位矩阵
  1. 行列式 det(A)
det = torch.det(A)
  1. 迹(对角线和 tr(A))
tr = torch.trace(A)
  1. 对角线提取/构造对角矩阵
torch.diag(A) # 提取对角线
torch.diag(x) # 向量生成对角阵

5. 分解运算(特征、SVD、LU)

  1. 特征值、特征向量 Ax=\lambda x
eigvals, eigvecs = torch.linalg.eig(A)
  1. SVD奇异值分解 A=U\Sigma V^T
U, S, Vt = torch.linalg.svd(A)
  1. LU分解、QR分解
Q, R = torch.linalg.qr(A)
L, U = torch.linalg.lu(A)

6. 范数、距离

  1. L2范数(向量模长)
torch.norm(x)
torch.linalg.norm(x)
  1. L1范数、无穷范数
torch.norm(x, p=1)
torch.norm(x, p=float('inf'))

7. 线性方程组求解 Ax=b

# 求解 x = A^{-1}b
x = torch.linalg.solve(A, b)

8. 维度拼接、变形(矩阵维度操作)

  1. 重塑维度:A.reshape(m,n) / A.view(m,n)
  2. 拼接矩阵:
torch.cat([A,B], dim=0) # 纵向拼接(行增加)
torch.cat([A,B], dim=1) # 横向拼接(列增加)
  1. 增加/删除维度:unsqueeze() / squeeze()

9. 广播机制(同numpy)

不同维度张量自动扩展匹配形状,无需手动复制矩阵,大幅简化向量矩阵混合运算。

10. GPU加速

所有运算无缝迁移显卡,只需转cuda:

A = torch.tensor([[1,2],[3,4]]).cuda()
# 或
A = torch.tensor([[1,2],[3,4]], device="cuda")

11. 关键区分避坑(高频易错)

  1. A * B:逐元素相乘 ≠ 矩阵乘法
  2. A @ B / matmul:标准线性代数矩阵乘法
  3. torch.mm 仅二维;bmm 仅三维批量;matmul 通用兼容所有维度
  4. torch.inverse 仅可逆方阵;奇异矩阵用SVD伪逆 torch.linalg.pinv(A)

12. 适用场景(结合你之前线性回归)

线性回归求解 X^TXw=X^Ty、最小二乘、梯度下降矩阵推导、数据集特征向量运算全部依靠以上API实现。

关联文档

Yanche Blog

记录云原生、Linux、数据库等技术领域的学习心得,以及日常生活的思考与感悟。

© 2026 Yanche Blog. All rights reserved.

Powered by Astro