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

pytorch学习:矩阵分解:奇异值分解(SVD分解)

前言

矩阵分解(Matrix Decomposition)是将一个矩阵分解成多个矩阵的乘积的过程,这种分解方法在计算、机器学习和线性代数中有广泛应用。不同的分解方式可以简化计算、揭示矩阵的内在结构或提高算法的效率。

奇异值分解

奇异值分解(Singular Value Decomposition, SVD)是矩阵分解的一种重要形式,它将一个任意的矩阵分解为三个矩阵的乘积,从而揭示出原矩阵的内在结构。

对于任意一个m×n 的矩阵A,它的奇异值分解可以表示为:

A = U\sum V^{^{T}}

其中:

U 是一个 m×m 的正交矩阵,称为左奇异向量矩阵。

V 是一个 n×n 的正交矩阵,称为右奇异向量矩阵。

Σ 是一个 m×n 的对角矩阵,其中对角线上的元素是矩阵 A 的奇异值,其余元素为零。奇异值是非负实数,按降序排列,即 σ 1≥σ 2 ≥⋯≥σ r≥0,其中σ r 是方阵AA^{^{T}}的秩的根号值。

注:正交矩阵(Orthogonal Matrix)是指一种特殊的方阵,一个 n×n 的矩阵 Q 被称为正交矩阵,如果它满足Q TQ=QQ T =I其中Q T是 Q 的转置矩阵,I 是n×n 的单位矩阵。

求解步骤:

1.求矩阵AA^{^{T}}

2.求AA^{^{T}}矩阵的特征值和特征向量(正交化)。

3.求奇异值(特征值开方)和正交矩阵V^{_{T}}

4.求正交矩阵U。

实例

1.方阵的分解

代码实现:
import torcha = torch.Tensor([[3,1],[1,3]])
u,s,v = torch.svd(a)
print(a)
print(u)
print(s)
print(v)
print(torch.svd(a))
运行结果:
tensor([[3., 1.],[1., 3.]])
tensor([[-0.7071, -0.7071],[-0.7071,  0.7071]])
tensor([4., 2.])
tensor([[-0.7071, -0.7071],[-0.7071,  0.7071]])
torch.return_types.svd(
U=tensor([[-0.7071, -0.7071],[-0.7071,  0.7071]]),
S=tensor([4., 2.]),
V=tensor([[-0.7071, -0.7071],[-0.7071,  0.7071]]))
 2.矩形阵的分解

代码实现:
import torcha = torch.Tensor([[4,0],[3,0],[0,5]])
u,s,v = torch.svd(a)
print(a)
print(u)
print(s)
print(v)
print(torch.svd(a))
运行结果:
tensor([[4., 0.],[3., 0.],[0., 5.]])
tensor([[-0.8000,  0.0000],[-0.6000,  0.0000],[ 0.0000, -1.0000]])
tensor([5., 5.])
tensor([[-1., -0.],[-0., -1.]])
torch.return_types.svd(
U=tensor([[-0.8000,  0.0000],[-0.6000,  0.0000],[ 0.0000, -1.0000]]),
S=tensor([5., 5.]),
V=tensor([[-1., -0.],[-0., -1.]]))

http://www.lryc.cn/news/477816.html

相关文章:

  • 接口测试用例设计的关键步骤与技巧解析!
  • CSS画icon图标系列(一)
  • 【数据结构-合法括号字符串】【华为笔试题】力扣1190. 反转每对括号间的子串
  • qt QFileInfo详解
  • 金华迪加 现场大屏互动系统 mobile.do.php 任意文件上传漏洞复现
  • 探寻5G工业网关市场,5G工业网关品牌解析
  • RK3568开发板静态IP地址配置
  • element-plus table tableRowClassName 无效
  • 商务英语学习柯桥学外语到泓畅-老外说“go easy on me”是什么意思?
  • 【Python爬虫基础】基于 Python 的反爬虫机制详解与代码实现
  • HTB:PermX[WriteUP]
  • uniapp 整合 OpenLayers - 使用modify修改要素
  • JMeter快速造数之数据导入导出
  • 框架学习01-Spring
  • Java | Leetcode Java题解之第539题最小时间差
  • 126页PPT麦肯锡战略实施与成本优化:质效提升与精益采购实践
  • Modbus解析流程全面升级:体验全新核心与终极优化!
  • 【MWorks】Ubuntu 系统搭建
  • 安装Element-Plus与v-model在vue3组件中的使用
  • Qt学习笔记第41到50讲
  • 加固筑牢安全防线:多源威胁检测响应在企业网络安全运营中的核心作用
  • 用Python将PDF表格提取到文本、CSV和Excel文件中
  • AIGC在游戏设计中的应用及影响
  • 给初学者的 Jupyter Notebook 教程
  • 搜维尔科技:Xsens和BoB助力生物力学教育
  • Vue动态计算Table表格的高度
  • 【MongoDB】MongoDB的聚合(Aggregate、Map Reduce)与管道(Pipline) 及索引详解(附详细案例)
  • 数组和字符串的es6新方法使用和综合案例
  • JS语法进阶第一课!—DOM(重点)
  • Swift 开发教程系列 - 第5章:集合类型