PyTorch学习笔记|张量的线性代数运算

PyTorch中并未设置单独的矩阵对象类型,因此PyTorch中,二维张量就相当于矩阵对象,并且拥有一系列线性代数相关函数和方法。

矩阵的形变及特殊矩阵构造方法

go 复制代码
t1 = torch.arange(1, 7).reshape(2, 3).float()
torch.t(t1)

t = torch.arange(4)
torch.diag(t)

torch.triu(t1)
torch.tril(t1)

矩阵的基本运算

dot只能作用于一维张量。

go 复制代码
t = torch.arange(1, 4)
torch.dot(t,t)

t1 = torch.arange(1,7).reshape(2,3)
t2 = torch.arange(1,10).reshape(3,3)
torch.mm(t1, t2)

t3 = torch.arange(1,13).reshape(3,2,2)
t4 = torch.arange(1,19).reshape(3,2,3)
torch.bmm(t3, t4)

torch.addmm(t, t1, t2)

矩阵的线性代数运算

矩阵的迹运算比较简单,就是矩阵对角线元素之和。

go 复制代码
A = torch.tensor([[1., 2],[4, 5]])
torch.trace(A)

#
tensor(6.)

矩阵的秩(rank),是指矩阵中行或列的极大线性无关数,且矩阵中行、列极大无关数总是相同的,任何矩阵的秩都是唯一值,满秩指的是方阵(行数和列数相同的矩阵)中行数、列数和秩相同,满秩矩阵有线性唯一解等重要特性,而其他矩阵也能通过求解秩来降维,同时,秩也是奇异值分解等运算中涉及到的重要概念。

go 复制代码
torch.linalg.matrix_rank(A)
# tensor(2)

行列式其实就是一个数,通过行列式的计算,我们能够知道矩阵是否可逆,从而可以进一步求解矩阵所对应的线性方程。

go 复制代码
torch.det(A)
# tensor(-3.)

矩阵求逆矩阵我们用一个简单的线性回归来讲解,点(1,2)和点(3,4),我们用一条线来拟合,其实就是求这个方程y=ax+b。

我们来看看矩阵怎么表达上面这个形式。

因此我们可以通过求逆矩阵来计算x。

我们来看一下代码。

go 复制代码
A = torch.tensor([[1.0,1],[3,1]])
B = torch.tensor([2.0,4])
torch.mv(torch.inverse(A), B)

# result
tensor([1., 1.])

所以结果就是y = x+1

当然也可以使用最小二乘法直接算出来。

go 复制代码
torch.linalg.lstsq(A, B.reshape(2,1))
# result
torch.return_types.linalg_lstsq(
solution=tensor([[1.0000],
        [1.0000]]),
residuals=tensor([]),
rank=tensor(2),
singular_values=tensor([]))
相关推荐
We0 AI1 分钟前
2026 年 SEO 友好型网站构建器对比:We0 AI、Webflow、WordPress、10Web,谁更适合被收录?
人工智能·#ai建站
天国梦2 分钟前
中学生居家英语听力训练深度解析:从核心痛点到AI赋能的全链路方案
人工智能·学习
智恒百亿8 分钟前
RTX 5090 深度解析:8 卡智算集群多卡协同痛点完整解决方案
人工智能
树獭非懒9 分钟前
七、智能体的Reflection机制:让AI学会三省吾身
人工智能·llm·agent
字节跳动视频云技术团队11 分钟前
不止于 4K,火山引擎画质增强让视频从清晰走向细腻
人工智能·音视频开发
中微极客20 分钟前
解锁LLM开发全栈能力:Python + LangChain + RAG 工程实战指南
人工智能·python·langchain
CCC:CarCrazeCurator25 分钟前
A100作为深度学习基础计算节点的原因
人工智能·深度学习
米小虾31 分钟前
操作系统正在被AI重写:从谷歌到微软,为什么所有人都在押注"Agent OS"?
人工智能
ACP广源盛1392462567337 分钟前
IX8024@ACP# 搭配此芯 AI 服务器 + 爱芯元智产品完整方案
大数据·运维·服务器·人工智能·分布式·嵌入式硬件
hhzz41 分钟前
Barbershop:基于GAN和分割Mask的图像合成技术——从理论到实战全解析
图像处理·人工智能·python·深度学习·计算机视觉