[paddle] 矩阵相关的指标
行列式 det
行列式定义参考
d e t ( A ) = ∑ i 1 , i 2 , ⋯ , i n ( − 1 ) σ ( i 1 , ⋯ , i n ) a 1 , i 1 a 2 , i 2 , ⋯ , a n , i n det(A) =\sum_{i_1,i_2,\cdots,i_n } (-1)^{\sigma(i_1,\cdots,i_n)} a_{1,i_1}a_{2,i_2},\cdots, a_{n,i_n} det(A)=i1,i2,⋯,in∑(−1)σ(i1,⋯,in)a1,i1a2,i2,⋯,an,in
i 1 , ⋯ , i n i_1,\cdots,i_n i1,⋯,in 是 1 , ⋯ , n 1,\cdots,n 1,⋯,n 的排列.
参数
x (Tensor):输入一个或批量矩阵。x 的形状应为 [*, M, M],其中 * 为零或更大的批次维度,数据类型支持 float32、float64。
返回
Tensor,输出矩阵的行列式值 Shape 为 [*] 。
多个方阵的行列式
import paddle
paddle.seed(2023)
x = paddle.randn([4,3,3])
A = paddle.linalg.det(x)
print(A)
常用方阵的行列式:
import paddle
paddle.seed(2023)
x = paddle.randn([3,3])
A = paddle.linalg.det(x)
print(A)
矩阵的范数 norm
矩阵的算子范数
矩阵的算子范数(也称为矩阵范数或诱导范数)是衡量矩阵作为线性算子作用在向量上的“放大”程度的一种度量。算子范数依赖于向量范数的定义,常见的算子范数包括以下几种:
- 2-范数(谱范数):
矩阵的2-范数是矩阵最大奇异值或最大特征值的绝对值。对于矩阵 A A A ,2-范数定义为:
∥ A ∥ 2 = σ max ( A ) \|A\|_2 = \sigma_{\max}(A) ∥A∥2=σmax(A)
其中 σ max ( A ) \sigma_{\max}(A) σmax(A) 是矩阵 A A A 的最大奇异值。2-范数也是矩阵作为线性算子在欧几里得空间中最大“拉伸”效果的度量。 - 1-范数:
矩阵的1-范数是矩阵列向量1-范数的最大值。对于矩阵 A A A ,1-范数定义为:
∥ A ∥ 1 = max ∥ x ∥ 1 = 1 ∥ A x ∥ 1 \|A\|_1 = \max_{\|x\|_1 = 1} \|Ax\|_1 ∥A∥1=∥x∥1=1max∥Ax∥1
这实际上是矩阵列向量的绝对和的最大值。 - ∞ \infty ∞-范数(无穷范数):
矩阵的 ∞ \infty ∞-范数是矩阵行向量1-范数的最大值。对于矩阵 A A A , ∞ \infty ∞-范数定义为:
∥ A ∥ ∞ = max ∥ x ∥ ∞ = 1 ∥ A x ∥ ∞ \|A\|_{\infty} = \max_{\|x\|_{\infty} = 1} \|Ax\|_{\infty} ∥A∥∞=∥x∥∞=1max∥Ax∥∞
这实际上是矩阵行向量的绝对和的最大值。 - p-范数:
更一般地,可以定义矩阵的p-范数。对于矩阵 A A A ,p-范数定义为:
∥ A ∥ p = max ∥ x ∥ p = 1 ∥ A x ∥ p \|A\|_p = \max_{\|x\|_p = 1} \|Ax\|_p ∥A∥p=∥x∥p=1max∥Ax∥p
其中 p p p 是一个正实数。当 p = 2 p = 2 p=2 时,就是2-范数(谱范数)。
算子范数的性质:
- 正定性:对于任意矩阵 A A A,都有 ∥ A ∥ ≥ 0 \|A\| \geq 0 ∥A∥≥0,且 ∥ A ∥ = 0 \|A\| = 0 ∥A∥=0 当且仅当 A = 0 A = 0 A=0。
- 齐次性:对于任意矩阵 A A A 和标量 c c c,都有 ∥ c A ∥ = ∣ c ∣ ∥ A ∥ \|cA\| = |c| \|A\| ∥cA∥=∣c∣∥A∥。
- 三角不等式:对于任意矩阵 A A A 和 B B B,都有 ∥ A + B ∥ ≤ ∥ A ∥ + ∥ B ∥ \|A + B\| \leq \|A\| + \|B\| ∥A+B∥≤∥A∥+∥B∥。
- 相容性:对于任意矩阵 A A A 和 B B B,都有 ∥ A B ∥ ≤ ∥ A ∥ ∥ B ∥ \|AB\| \leq \|A\| \|B\| ∥AB∥≤∥A∥∥B∥。
矩阵的核范数
矩阵的核范数(Nuclear Norm)是矩阵理论中的一个重要概念,特别是在低秩矩阵恢复和压缩感知等领域。核范数是矩阵奇异值之和,它可以看作是矩阵的秩的一种凸近似。
对于任意矩阵 A ∈ R m × n A \in \mathbb{R}^{m \times n} A∈Rm×n,其核范数定义为:
∥ A ∥ ∗ = ∑ i = 1 min ( m , n ) σ i ( A ) \|A\|_* = \sum_{i=1}^{\min(m,n)} \sigma_i(A) ∥A∥∗=i=1∑min(m,n)σi(A)
其中, σ i ( A ) \sigma_i(A) σi(A)表示矩阵 A A A 的第 i i i 个奇异值,奇异值是矩阵 A A A 的奇异值分解(SVD)中的非负对角元素。
核范数的一些重要性质包括:
- 凸性:核范数是矩阵秩的凸包络,这意味着它是秩函数的最小凸近似。在优化问题中,使用核范数可以使得问题变得可解,因为秩函数是非凸的,而核范数是凸的。
- ** lipschitz连续性**:核范数是 lipschitz连续的,这意味着对于任意两个矩阵 A A A 和 B B B,存在常数 L L L 使得:
∥ A ∥ ∗ − ∥ B ∥ ∗ ∥ ≤ L ∥ A − B ∥ F \|A\|_* - \|B\|_* \| \leq L \|A - B\|_F ∥A∥∗−∥B∥∗∥≤L∥A−B∥F
其中 ( | \cdot |_F ) 表示 Frobenius 范数。 - 矩阵逼近:在给定矩阵的核范数约束下,最优的低秩逼近可以通过矩阵的奇异值软阈值化实现。这意味着核范数在低秩矩阵逼近问题中起着关键作用。
矩阵的Frobenius范数
矩阵的F范数,也称为Frobenius范数,是矩阵元素平方和的平方根。它将矩阵视为一个长向量,并计算其欧几里得范数。对于任意矩阵 A ∈ R m × n A \in \mathbb{R}^{m \times n} A∈Rm×n,其Frobenius范数定义为:
∥ A ∥ F = ∑ i = 1 m ∑ j = 1 n ∣ a i j ∣ 2 \|A\|_F = \sqrt{\sum_{i=1}^{m} \sum_{j=1}^{n} |a_{ij}|^2} ∥A∥F=i=1∑mj=1∑n∣aij∣2
其中, a i j a_{ij} aij 表示矩阵 A A A 的第 i i i 行第 j j j 列的元素。
Frobenius范数的一些重要性质包括:
- 与核范数的关系:对于任意矩阵 A A A,有 ∥ A ∥ ∗ ≤ ∥ A ∥ F \|A\|_* \leq \|A\|_F ∥A∥∗≤∥A∥F,其中 ∥ A ∥ ∗ \|A\|_* ∥A∥∗表示矩阵的核范数。
- 与2-范数的关系:对于矩阵 A A A ,其Frobenius范数等于其向量化的2-范数,即 ∥ A ∥ F = ∥ v e c ( A ) ∥ 2 \|A\|_F = \|vec(A)\|_2 ∥A∥F=∥vec(A)∥2,其中 v e c ( A ) vec(A) vec(A) 表示将矩阵 A A A 按列堆叠成向量。
paddle.linalg.norm(x, p=None, axis=None, keepdim=False, name=None)
将计算给定 Tensor 的矩阵范数(Frobenius 范数, Nuclear 范数或 p 范数)和向量范数(向量 1 范数、2 范数、或者通常的 p 范数)。
该函数计算的是向量范数还是矩阵范数,确定方法如下: - 如果 axis 是 int 类型,计算向量范数 - 如果 axis 是二维数组,计算矩阵范数 - 如果 axis 为 None,x 会被压缩成一维向量然后计算向量范数
Paddle 支持以下范数:
参数
x (Tensor) - 输入 Tensor。维度为多维,数据类型为 float32 或 float64。
p (int|float|string,可选) - 范数(ord)的种类。目前支持的值为fro(Frobenius范数) 、 nuc(核范数)、inf、-inf、0、1、2,和任何实数 p 对应的 p 范数。默认值为 None。
axis (int|list|tuple,可选) - 使用范数计算的轴。如果 axis 为 None,则忽略 input 的维度,将其当做向量来计算。如果 axis 为 int 或者只有一个元素的 list|tuple,norm API 会计算输入 Tensor 的向量范数。如果 axis 为包含两个元素的 list,API 会计算输入 Tensor 的矩阵范数。当 axis < 0 时,实际的计算维度为 rank(input) + axis。默认值为 None 。
keepdim (bool,可选) - 是否在输出的 Tensor 中保留和输入一样的维度,默认值为 False。当 keepdim 为 False 时,输出的 Tensor 会比输入 input 的维度少一些。
name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。
返回
Tensor,在指定 axis 上进行范数计算的结果,与输入 input 数据类型相同。
import paddle
x = paddle.arange(24, dtype="float32").reshape([2, 3, 4]) - 12
print(x)# compute frobenius norm along last two dimensions.
out_fro = paddle.linalg.norm(x, p='fro', axis=[0,1])
print(out_fro)# compute 2-order vector norm along last dimension.
out_pnorm = paddle.linalg.norm(x, p=2, axis=-1)
print(out_pnorm)# compute 2-order norm along [0,1] dimension.
out_pnorm = paddle.linalg.norm(x, p=2, axis=[0,1])
print(out_pnorm)# compute inf-order norm
out_pnorm = paddle.linalg.norm(x, p=float("inf"))
print(out_pnorm)out_pnorm = paddle.linalg.norm(x, p=float("inf"), axis=0)
print(out_pnorm)# compute -inf-order norm
out_pnorm = paddle.linalg.norm(x, p=-float("inf"))
print(out_pnorm)out_pnorm = paddle.linalg.norm(x, p=-float("inf"), axis=0)
print(out_pnorm)
条件数 cond
c o n d ( A , p ) = sup x ≠ 0 ∥ A ∥ p ∥ A − 1 ∥ p \mathrm{cond}(A,p) =\sup_{x\neq 0} \frac{\|A\|_p}{\|A^{-1}\|_p} cond(A,p)=x=0sup∥A−1∥p∥A∥p
其中 ∥ ⋅ ∥ p \| \cdot \|_p ∥⋅∥p 是矩阵的 p p p 范数。
根据范数种类 p 计算一个或一批矩阵的条件数,也可以通过 paddle.cond 来调用。
参数
x (Tensor):输入可以是形状为 (, m, n) 的矩阵 Tensor, * 为零或更大的批次维度,此时 p 为 2 或 -2;也可以是形状为 (, n, n) 的可逆(批)方阵 Tensor,此时 p 为任意已支持的值。数据类型为 float32 或 float64 。
p (float|string,可选):范数种类。目前支持的值为 fro(Frobenius范数) 、 nuc(核范数) 、 1 、 -1 、 2 、 -2 、 inf 、 -inf。默认值为 None,即范数种类为 2 。
name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。
返回
Tensor,条件数的计算结果,数据类型和输入 x 的一致。
import paddle
paddle.seed(2023)
x = paddle.to_tensor([[1., 0, -1], [0, 1, 0], [1, 0, 1]])# compute conditional number when p is None
out = paddle.linalg.cond(x)
print(out)# compute conditional number when order of the norm is 'fro'
out_fro = paddle.linalg.cond(x, p='fro')
print(out_fro)# compute conditional number when order of the norm is 'nuc'
out_nuc = paddle.linalg.cond(x, p='nuc')
print(out_nuc)# compute conditional number when order of the norm is 1
out_1 = paddle.linalg.cond(x, p=1)
print(out_1)# compute conditional number when order of the norm is -1
out_minus_1 = paddle.linalg.cond(x, p=-1)
print(out_minus_1)# compute conditional number when order of the norm is 2
out_2 = paddle.linalg.cond(x, p=2)
print(out_2)# compute conditional number when order of the norm is -1
out_minus_2 = paddle.linalg.cond(x, p=-2)
print(out_minus_2)# compute conditional number when order of the norm is inf
out_inf = paddle.linalg.cond(x, p=float("inf"))
print(out_inf)# compute conditional number when order of the norm is -inf
out_minus_inf = paddle.linalg.cond(x, p=-float("inf"))
print(out_minus_inf)a = paddle.randn([2, 4, 4])
print(a)a_cond_fro = paddle.linalg.cond(a, p='fro')
print(a_cond_fro)b = paddle.randn([2, 3, 4])
print(b)b_cond_2 = paddle.linalg.cond(b, p=2)
print(b_cond_2)
矩阵的秩
线性无关性的定义
一组向量被称为线性无关,如果其中没有任何一个向量可以表示为其他向量的线性组合, 例如
α 1 = ∑ i = 2 n k i α i \alpha_1 = \sum_{i=2}^n k_i\alpha_i α1=∑i=2nkiαi。
矩阵的行向量组和列向量组
给定一个 m × n m \times n m×n 矩阵 A A A ,它包含 m m m 个行向量和 n n n 个列向量。
极大线性无关组
在一组向量中,极大线性无关组是指包含最多线性无关向量的子集。添加任何额外的向量都会使该组变得线性相关。
矩阵的秩的定义
矩阵 A A A 的秩是指其行向量组或列向量组中极大线性无关组的大小。
矩阵的行秩等于其列秩,统称为矩阵的秩。
import paddlea = paddle.eye(10)
b = paddle.linalg.matrix_rank(a)
print(b)c = paddle.ones(shape=[3, 4, 5, 5])
d = paddle.linalg.matrix_rank(c, tol=0.01, hermitian=True)
print(d)
相关文章:
[paddle] 矩阵相关的指标
行列式 det 行列式定义参考 d e t ( A ) ∑ i 1 , i 2 , ⋯ , i n ( − 1 ) σ ( i 1 , ⋯ , i n ) a 1 , i 1 a 2 , i 2 , ⋯ , a n , i n det(A) \sum_{i_1,i_2,\cdots,i_n } (-1)^{\sigma(i_1,\cdots,i_n)} a_{1,i_1}a_{2,i_2},\cdots, a_{n,i_n} det(A)i1,i2,⋯,in…...
何谓共赢?
A和B是人或组织,他们怎样的合作才是共赢呢? 形态1:A提供自己的身份证等个人信息,B用来作贷款等一些事务,A每月得到一笔钱。 A的风险远大于收益,或者B从事的是非法行为; 形态2:A单方面提前终止了与B的合作…...
Kanass基础教程-创建项目
Kanass是一款国产开源免费的项目管理工具,工具简洁易用,开源免费,之前介绍过kanass的一些产品简介及安装配置方法,本文就从如何创建第一个项目来开始kanass上手之旅吧。 1. 创建项目 点击项目->项目添加 按钮进入项目添加页面…...
实验9 JSP访问数据库(二)
实验9 JSP访问数据库(二) 目的: 1、熟悉JDBC的数据库访问模式。 2、掌握预处理语句的使用 实验要求: 1、使用Tomcat作为Web服务器 2、通过JDBC访问数据库,实现增删改查功能的实现 3、要求提交实验报告,将代…...
DeepSeek 核心技术全景解析
DeepSeek 核心技术全景解析:突破性创新背后的设计哲学 DeepSeek的创新不仅仅是对AI基础架构的改进,更是一场范式革命。本文将深入剖析其核心技术,探讨 如何突破 Transformer 计算瓶颈、如何在 MoE(Mixture of Experts)…...
单片机基础模块学习——DS1302时钟芯片
一、DS1302时钟简介 1.与定时器对比 DS1302时钟也称为RTC时钟(Real Time Clock,实时时钟),说到时钟,可能会想到定时器,下表来简单说明一下两者的区别。 定时器(Timer)实时时钟(RTC)精度高,可达微秒级精度较低,多为秒级计时范围短计时范围长2.开发板所在位置 下面方框里…...
Vue+Echarts 实现青岛自定义样式地图
一、效果 二、代码 <template><div class"chart-box"><chart ref"chartQingdao" style"width: 100%; height: 100%;" :options"options" autoresize></chart></div> </template> <script> …...
FIR滤波器:窗函数法
一、FIR滤波器基础 FIR(有限脉冲响应)滤波器的三大特点: 绝对稳定:没有反馈回路,不会出现失控振荡 线性相位:信号通过后波形不失真 直观设计:通过窗函数法、频率采样法等方法实现 二、窗函…...
【AI】探索自然语言处理(NLP):从基础到前沿技术及代码实践
Hi ! 云边有个稻草人-CSDN博客 必须有为成功付出代价的决心,然后想办法付出这个代价。 目录 引言 1. 什么是自然语言处理(NLP)? 2. NLP的基础技术 2.1 词袋模型(Bag-of-Words,BoWÿ…...
M|哪吒之魔童闹海
rating: 8.5 豆瓣: 8.5 上映时间: “2025” 类型: M动画 导演: 饺子 主演: 国家/地区: 中国大陆 片长/分钟: 144分钟 M|哪吒之魔童闹海 制作精良,除了剧情逻辑有一点瑕疵,各方面都很到位。总体瑕不掩瑜。 上映时间: &…...
DeepSeek 介绍及对外国的影响
DeepSeek 简介 DeepSeek(深度求索)是一家专注实现 AGI(人工通用智能)的中国科技公司,2023 年成立,总部位于杭州,在北京设有研发中心。与多数聚焦具体应用(如人脸识别、语音助手&…...
力扣动态规划-18【算法学习day.112】
前言 ###我做这类文章一个重要的目的还是记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!! 习题 1.下降路径最小和 题目链接:931. …...
DBASE DBF数据库文件解析
基于Java实现DBase DBF文件的解析和显示 JDK19编译运行,实现了数据库字段和数据解析显示。 首先解析数据库文件头代码 byte bytes[] Files.readAllBytes(Paths.get(file));BinaryBufferArray bis new BinaryBufferArray(bytes);DBF dbf new DBF();dbf.VersionN…...
【ESP32】ESP-IDF开发 | WiFi开发 | UDP用户数据报协议 + UDP客户端和服务器例程
1. 简介 UDP协议(User Datagram Protocol),全称用户数据报协议,它是一种面向非连接的协议,面向非连接指的是在正式通信前不必与对方先建立连接, 不管对方状态就直接发送。至于对方是否可以接收到这些数据内…...
【Qt】常用的容器
Qt提供了多个基于模板的容器类,这些容器类可用于存储指定类型的数据项。例如常用的字符串列表类 QStringList 可用来操作一个 QList<QString>列表。 Qt的容器类比标准模板库(standard template library,STL)中的容器类更轻巧、使用更安全且更易于使…...
tiktok 国际版抖抖♬♬ X-Bogus参数算法逆向分析
加密请求参数得到乱码,最终得到X-Bogus...
【AI】人工智能没那么神秘!
AI是什么? 人工智能(Artificial Intelligence),英文缩写为AI。 AI人工智能不是简单的应用程序,而是一类技术,包含机器学习、自然语言处理、计算机视觉等多个领域。AI系统通常由算法、数据、模型和代码组成…...
C#面试常考随笔9:什么是闭包?
最简单的例子: Lambda可以访问Lambda表达式块外部的变量,叫闭包。 定义 闭包是指有权访问另一个函数作用域中的变量的函数。即使该函数已经执行完毕,其作用域内的变量也不会被销毁,而是会被闭包所捕获并保留,供闭包…...
记录 | 基于MaxKB的仿小红书旅游文章AI制作(含图文、视频)
目录 前言一、创建应用Step1 表单Step2 AI对话生成旅游攻略提炼场景Step3 图片生成Step4 视频生成Step5 指定回复二、检验效果三、整体结构视图更新时间前言 参考文章: 自己的感想 想复现文章的内容你需要先学习下我之前的三篇文章中的记录。 1、记录 | Docker的windows版安装…...
C++ Primer 命名空间的using声明
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
c语言(关键字)
前言: 感谢b站鹏哥c语言 内容: 栈区(存放局部变量) 堆区 静态区(存放静态变量) rigister关键字 寄存器,cpu优先从寄存器里边读取数据 #include <stdio.h>//typedef,类型…...
Kafka SASL/SCRAM介绍
文章目录 Kafka SASL/SCRAM介绍1. SASL/SCRAM 认证机制2. SASL/SCRAM 认证工作原理2.1 SCRAM 认证原理2.1.1 密码存储和加盐2.1.2 SCRAM 认证流程 2.2 SCRAM 认证的关键算法2.3 SCRAM 密码存储2.4 SCRAM 密码管理 3. 配置和使用 Kafka SASL/SCRAM3.1 Kafka 服务器端配置3.2 创建…...
ARM内核:嵌入式时代的核心引擎
引言 在当今智能设备无处不在的时代,ARM(Advanced RISC Machines)处理器凭借其高性能、低功耗的特性,成为智能手机、物联网设备、汽车电子等领域的核心引擎。作为精简指令集(RISC)的典范,ARM核…...
一文大白话讲清楚webpack进阶——8——Module Federation
文章目录 一文大白话讲清楚webpack进阶——8——Module Federation1. 啥是Module Federation2. 这里讲两个基础概念3. 容器应用配置4. 远程应用配置5. 模块使用5. ModuleFederation好在哪里6. ModuleFederation实战 一文大白话讲清楚webpack进阶——8——Module Federation 1.…...
Airflow:选择合适执行器扩展任务执行
Apache Airflow是面向开发人员使用的,以编程方式编写、调度和监控的数据流程平台。可伸缩性是其关键特性之一,Airflow支持使用不同的执行器来执行任务。在本文中,我们将深入探讨如何利用这些执行器在Airflow中有效地扩展任务执行。 理解Airfl…...
DeepSeek-R1 论文. Reinforcement Learning 通过强化学习激励大型语言模型的推理能力
论文链接: [2501.12948] DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning 实在太长,自行扔到 Model 里,去翻译去提问吧。 工作原理: 主要技术,就是训练出一些专有用途小模型&…...
CoRAG 来自微软与人大的创新RAG框架技术
微软与人大合作开发的CoRAG(Chain-of-Retrieval Augmented Generation)是一种创新的检索增强生成(RAG)框架,旨在通过模拟人类思考方式来提升大语言模型(LLM)在复杂问题上的推理和回答能力。以下是对CoRAG的深度介绍: 1. CoRAG的核心理念 CoRAG的核心思想是通过动态调…...
Qt Creator 中使用 vcpkg
Qt Creator 中使用 vcpkg Qt Creator 是一个跨平台的轻量级 IDE,做 Qt 程序开发的同学们肯定对这个 IDE 都比较属于。这个 IDE 虽然没有 Visual Stdio 功能那么强,但是由于和 Qt 集成的比较深,用来开发 Qt 程序还是很顺手的。 早期…...
mysql中in和exists的区别?
大家好,我是锋哥。今天分享关于【mysql中in和exists的区别?】面试题。希望对大家有帮助; mysql中in和exists的区别? 在 MySQL 中,IN 和 EXISTS 都是用于子查询的操作符,但它们在执行原理和适用场景上有所不…...
智慧园区管理系统推动企业智能运维与资源优化的全新路径分析
内容概要 在当今快速发展的商业环境中,园区管理的数字化转型显得尤为重要。在这个背景下,快鲸智慧园区管理系统应运而生,成为企业实现高效管理的最佳选择。它通过整合互联网、物联网等先进技术,以智能化的方式解决了传统管理模式…...
