当前位置: 首页 > 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.]]))

相关文章:

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

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

接口测试用例设计的关键步骤与技巧解析!

简介 接口测试在需求分析完成之后,即可设计对应的接口测试用例,然后根据用例进行接口测试。接口测试用例的设计也需要用到黑盒测试用例设计方法,和测试流程与理论章节的功能测试用例设计的方法类似,设计过程中还需要增加与接口特…...

CSS画icon图标系列(一)

目录 前言: 一、向右箭头 1.原理: 2.代码实现 3.结果展示: 二、钟表 1.原理: 2.代码展示: 3.最终效果: 三、小手机 1.原理: 2.代码展示: 3.最后效果: 四、结…...

【数据结构-合法括号字符串】【华为笔试题】力扣1190. 反转每对括号间的子串

给出一个字符串 s(仅含有小写英文字母和括号)。 请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。 注意,您的结果中 不应 包含任何括号。 示例 1: 输入:s “…...

qt QFileInfo详解

1、概述 QFileInfo是Qt框架中用于获取文件信息的工具类。它提供了与操作系统无关的文件属性,如文件的名称、位置(路径)、访问权限、类型(是否为目录或符号链接)等。此外,QFileInfo还可以获取文件的大小、创…...

金华迪加 现场大屏互动系统 mobile.do.php 任意文件上传漏洞复现

0x01 产品简介 金华迪加现场大屏互动系统是一种集成了先进技术和创意设计的互动展示解决方案,旨在通过大屏幕和多种交互方式,为观众提供沉浸式的互动体验。该系统广泛应用于各类活动、展览、会议等场合,能够显著提升现场氛围和参与者的体验感。 0x02 漏洞概述 金华迪加 现…...

探寻5G工业网关市场,5G工业网关品牌解析

随着5G技术的浪潮席卷全球,工业领域正经历着一场前所未有的变革。5G工业网关,作为连接工业设备与云端的桥梁,以其高速、低延迟的数据传输能力和强大的边缘计算能力,成为推动工业数字化转型的关键力量。那么,在众多5G工…...

RK3568开发板静态IP地址配置

1. 连接SSH MYD-LR3568 开发板设置了静态 eth0:1 192.168.0.10 和 eth1:1 192.168.1.10,在没有串口时调试开发板,可以用工具 SSH 登陆到开发板。 首先需要用一根网线直连电脑和开发板,或者通过路由器连接到开发板,将电脑 IP 手动设…...

element-plus table tableRowClassName 无效

官网上给的是 .el-table .warning-row {--el-table-tr-bg-color: var(--el-color-warning-light-9); } .el-table .success-row {--el-table-tr-bg-color: var(--el-color-success-light-9); } 但是 如果 加上了 scoped 这样样式是无效的 在 vue3 中用样式穿透 即可生…...

商务英语学习柯桥学外语到泓畅-老外说“go easy on me”是什么意思?

在口语中“go easy on sb ”这个短语是很常见的 01 go easy on me 怎么理解? 在口语中,“go easy on me”是一个非常常见的表达,通常表示请求对方在某方面对自己宽容一些,不要对自己太过苛刻或严厉。 短语(go&#xff…...

【Python爬虫基础】基于 Python 的反爬虫机制详解与代码实现

基于 Python 的反爬虫机制详解与代码实现 在如今的信息时代,数据的重要性不言而喻。许多企业网站都包含着宝贵的数据,这些数据可能会被网络爬虫恶意抓取,这种行为不仅影响服务器的正常运行,还可能泄露商业机密。为了应对这种情况,网站开发人员需要了解并应用有效的反爬虫…...

HTB:PermX[WriteUP]

目录 连接至HTB服务器并启动靶机 1.How many TCP ports are listening on PermX? 使用nmap对靶机TCP端口进行开放扫描 2.What is the default domain name used by the web server on the box? 使用curl访问靶机80端口 3.On what subdomain of permx.htb is there an o…...

uniapp 整合 OpenLayers - 使用modify修改要素

import { Modify } from "ol/interaction"; 修改点、线、面的位置和形状核心代码: // 修改要素核心代码modifyFeature() {this.modify new Modify({source: this.lineStringLayer.getSource(),});this.map.addInteraction(this.modify);}, 完整代码&am…...

JMeter快速造数之数据导入导出

导入数据 输入表格格式如下 创建CSV Data Set Config 在Body Data中调用 { "username": "${email}", "password": "123456", "client_id": "00bb9dbfc67439a5d42e0e19f448c7de310df4c7fcde6feb5bd95c6fac5a5afc"…...

框架学习01-Spring

一、Spring框架概述 Spring是一个开源的轻量级Java开发框架,它的主要目的是为了简化企业级应用程序的开发。它提供了一系列的功能,包括控制反转(IOC)、注入(DI)、面向切面编程(AOP)…...

Java | Leetcode Java题解之第539题最小时间差

题目&#xff1a; 题解&#xff1a; class Solution {public int findMinDifference(List<String> timePoints) {int n timePoints.size();if (n > 1440) {return 0;}Collections.sort(timePoints);int ans Integer.MAX_VALUE;int t0Minutes getMinutes(timePoint…...

126页PPT麦肯锡战略实施与成本优化:质效提升与精益采购实践

麦肯锡企业PMO的各个阶段是一个结构化和系统化的过程&#xff0c;旨在确保项目的高效执行和成功交付。以下是麦肯锡企业PMO各个阶段的详细描述&#xff1a; 一、项目启动与规划阶段 此阶段的主要目标是明确项目目标、业务需求&#xff0c;以及制定项目章程和项目管理计划。 …...

Modbus解析流程全面升级:体验全新核心与终极优化!

01 前言 本文章原文发表于我的微信公众号&#xff0c;请大家关注阅读&#xff0c;涉及的源代码等都在公众号&#xff0c;请搜索公众号&#xff1a; 智能家居NodeRed和HomeAssistant 即可关注。 02 全面改进的解析流程 前面发布过的Modbus解析流程在经过多个设备测试后发现存…...

【MWorks】Ubuntu 系统搭建

升级 Ubuntu系统 sudo apt-get update sudo apt-get upgrade安装流程 sudo chmod x 路径/文件.run安装 sudo 路径/文件.run安装过程中两个选项都填 y 打开安装对应的文件夹 运行 syslab.sh 文件&#xff0c;运行结束后&#xff0c;就可以在左上角开始搜索到syslab了。...

安装Element-Plus与v-model在vue3组件中的使用

安装Element-Plus 1.安装Element-Plus # 选择一个你喜欢的包管理器# NPM npm install element-plus --save# Yarn yarn add element-plus# pnpm pnpm install element-plus 2.main.ts中导入 import { createApp } from vue import { createPinia } from piniaimport App fr…...

为什么头部科技公司集体弃用Workday转向Lindy?——基于14家客户迁移数据的自动化人效拐点分析

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Lindy人力资源自动化方案的演进逻辑与战略定位 Lindy人力资源自动化方案并非孤立的技术堆叠&#xff0c;而是根植于企业数字化成熟度跃迁与HR职能价值重构双重驱动下的系统性进化。其演进逻辑呈现清晰的…...

戴森球计划工厂蓝图:革命性工厂配置架构的5大技术突破

戴森球计划工厂蓝图&#xff1a;革命性工厂配置架构的5大技术突破 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints FactoryBluePrints蓝图仓库代表了戴森球计划游戏中最先进…...

终极指南:如何用calendar.js轻松实现农历公历智能转换

终极指南&#xff1a;如何用calendar.js轻松实现农历公历智能转换 【免费下载链接】calendar.js 中国农历&#xff08;阴阳历&#xff09;和西元阳历即公历互转JavaScript库 项目地址: https://gitcode.com/gh_mirrors/ca/calendar.js 想要在你的Web应用中添加中国传统文…...

100行代码实现扩散模型:PyTorch版终极入门指南

100行代码实现扩散模型&#xff1a;PyTorch版终极入门指南 【免费下载链接】Diffusion-Models-pytorch Pytorch implementation of Diffusion Models (https://arxiv.org/pdf/2006.11239.pdf) 项目地址: https://gitcode.com/gh_mirrors/di/Diffusion-Models-pytorch 你…...

别再乱用电容了!从稳压芯片电路入手,搞懂电解电容和贴片电容到底该怎么搭配

电解电容与贴片电容的黄金组合&#xff1a;稳压电路设计实战解析 在电子电路设计中&#xff0c;稳压芯片的输入输出端常见一大一小两个电容并联的经典配置&#xff0c;这种设计看似简单却蕴含着深刻的电路原理。对于刚入行的硬件工程师或电子爱好者来说&#xff0c;理解这种组…...

RoPE与KV缓存优化:提升Transformer长序列处理能力

1. 旋转位置编码&#xff08;RoPE&#xff09;技术解析旋转位置编码&#xff08;Rotary Position Embedding, RoPE&#xff09;是近年来Transformer架构中位置编码技术的重要突破。传统Transformer使用绝对或相对位置编码&#xff0c;而RoPE通过旋转矩阵实现位置信息的注入&…...

Wi-Wi:2026 年 NAB 展亮点,实现皮秒级时间同步与毫米级距离测量!

Wi-Wi&#xff1a;实现 1 纳秒级无线时间同步2026 年 5 月 19 日&#xff0c;在 NAB 展会上&#xff0c;能看到 [Wi-Wi STAMP] 的演示。Wi-Wi STAMP 是一种无线时间同步协议&#xff0c;源自日本国立信息通信技术研究所&#xff08;NICT&#xff09;。Wi-Wi 技术特点Wi-Wi 即 W…...

SUMO低秩优化器:LLM训练内存效率提升技术解析

1. 低秩优化技术背景与SUMO核心价值在大型语言模型(LLM)训练领域&#xff0c;内存消耗一直是制约模型规模扩展的关键瓶颈。传统全参数训练需要存储完整的梯度矩阵&#xff0c;对于数十亿参数的模型&#xff0c;仅单次迭代就可能消耗数十GB显存。低秩优化技术通过矩阵分解原理&a…...

Navicat Mac版试用期重置终极指南:3种简单方法实现永久免费使用

Navicat Mac版试用期重置终极指南&#xff1a;3种简单方法实现永久免费使用 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 你…...

Unity碰撞器性能优化:Collider类型选择与物理系统调优

1. 为什么一个“看不见”的组件&#xff0c;能让帧率从60掉到20&#xff1f;在Unity项目上线前的性能压测阶段&#xff0c;我遇到过最让人头皮发麻的场景不是Shader报错&#xff0c;也不是内存泄漏&#xff0c;而是——主角刚跑进森林&#xff0c;帧率瞬间从58fps断崖式跌到18f…...