[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,i1??a2,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

矩陣的算子范數

矩陣的算子范數(也稱為矩陣范數或誘導范數)是衡量矩陣作為線性算子作用在向量上的“放大”程度的一種度量。算子范數依賴于向量范數的定義,常見的算子范數包括以下幾種:

  1. 2-范數(譜范數)
    矩陣的2-范數是矩陣最大奇異值或最大特征值的絕對值。對于矩陣 A A A ,2-范數定義為:
    ∥ A ∥ 2 = σ max ? ( A ) \|A\|_2 = \sigma_{\max}(A) A2?=σmax?(A)
    其中 σ max ? ( A ) \sigma_{\max}(A) σmax?(A) 是矩陣 A A A 的最大奇異值。2-范數也是矩陣作為線性算子在歐幾里得空間中最大“拉伸”效果的度量。
  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 A1?=x1?=1max?Ax1?
    這實際上是矩陣列向量的絕對和的最大值。
  3. ∞ \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?
    這實際上是矩陣行向量的絕對和的最大值。
  4. p-范數
    更一般地,可以定義矩陣的p-范數。對于矩陣 A A A ,p-范數定義為:
    ∥ A ∥ p = max ? ∥ x ∥ p = 1 ∥ A x ∥ p \|A\|_p = \max_{\|x\|_p = 1} \|Ax\|_p Ap?=xp?=1max?Axp?
    其中 p p p 是一個正實數。當 p = 2 p = 2 p=2 時,就是2-范數(譜范數)。
    算子范數的性質:
  • 正定性:對于任意矩陣 A A A,都有 ∥ A ∥ ≥ 0 \|A\| \geq 0 A0,且 ∥ 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+BA+B
  • 相容性:對于任意矩陣 A A A B B B,都有 ∥ A B ∥ ≤ ∥ A ∥ ∥ B ∥ \|AB\| \leq \|A\| \|B\| ABA∥∥B

矩陣的核范數

矩陣的核范數(Nuclear Norm)是矩陣理論中的一個重要概念,特別是在低秩矩陣恢復和壓縮感知等領域。核范數是矩陣奇異值之和,它可以看作是矩陣的秩的一種凸近似。
對于任意矩陣 A ∈ R m × n A \in \mathbb{R}^{m \times n} ARm×n,其核范數定義為:
∥ A ∥ ? = ∑ i = 1 min ? ( m , n ) σ i ( A ) \|A\|_* = \sum_{i=1}^{\min(m,n)} \sigma_i(A) A??=i=1min(m,n)?σi?(A)
其中, σ i ( A ) \sigma_i(A) σi?(A)表示矩陣 A A A 的第 i i i 個奇異值,奇異值是矩陣 A A A 的奇異值分解(SVD)中的非負對角元素。
核范數的一些重要性質包括:

  1. 凸性:核范數是矩陣秩的凸包絡,這意味著它是秩函數的最小凸近似。在優化問題中,使用核范數可以使得問題變得可解,因為秩函數是非凸的,而核范數是凸的。
  2. ** 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??LA?BF?
    其中 ( | \cdot |_F ) 表示 Frobenius 范數。
  3. 矩陣逼近:在給定矩陣的核范數約束下,最優的低秩逼近可以通過矩陣的奇異值軟閾值化實現。這意味著核范數在低秩矩陣逼近問題中起著關鍵作用。

矩陣的Frobenius范數

矩陣的F范數,也稱為Frobenius范數,是矩陣元素平方和的平方根。它將矩陣視為一個長向量,并計算其歐幾里得范數。對于任意矩陣 A ∈ R m × n A \in \mathbb{R}^{m \times n} ARm×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} AF?=i=1m?j=1n?aij?2 ?
其中, a i j a_{ij} aij? 表示矩陣 A A A 的第 i i i 行第 j j j 列的元素。
Frobenius范數的一些重要性質包括:

  1. 與核范數的關系:對于任意矩陣 A A A,有 ∥ A ∥ ? ≤ ∥ A ∥ F \|A\|_* \leq \|A\|_F A??AF?,其中 ∥ A ∥ ? \|A\|_* A??表示矩陣的核范數。
  2. 與2-范數的關系:對于矩陣 A A A ,其Frobenius范數等于其向量化的2-范數,即 ∥ A ∥ F = ∥ v e c ( A ) ∥ 2 \|A\|_F = \|vec(A)\|_2 AF?=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?1p?Ap??
其中 ∥ ? ∥ 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=2n?ki?α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)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/67752.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/67752.shtml
英文地址,請注明出處:http://en.pswp.cn/web/67752.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring Boot項目如何使用MyBatis實現分頁查詢

寫在前面&#xff1a;大家好&#xff01;我是晴空?。如果博客中有不足或者的錯誤的地方歡迎在評論區或者私信我指正&#xff0c;感謝大家的不吝賜教。我的唯一博客更新地址是&#xff1a;https://ac-fun.blog.csdn.net/。非常感謝大家的支持。一起加油&#xff0c;沖鴨&#x…

【論文筆記】Fast3R:前向并行muti-view重建方法

眾所周知&#xff0c;DUSt3R只適合做稀疏視角重建&#xff0c;與sapnn3r的目的類似&#xff0c;這篇文章以并行的方法&#xff0c;擴展了DUSt3R在多視圖重建中的能力。 abstract 多視角三維重建仍然是計算機視覺領域的核心挑戰&#xff0c;尤其是在需要跨不同視角實現精確且可…

本地部署DeepSeek教程(Mac版本)

第一步、下載 Ollama 官網地址&#xff1a;Ollama 點擊 Download 下載 我這里是 macOS 環境 以 macOS 環境為主 下載完成后是一個壓縮包&#xff0c;雙擊解壓之后移到應用程序&#xff1a; 打開后會提示你到命令行中運行一下命令&#xff0c;附上截圖&#xff1a; 若遇…

deepseek本地部署會遇到哪些坑

在本地部署DeepSeek(或其他類似AI模型)時,可能會遇到以下常見問題及解決方案: 1. 硬件資源不足 問題表現: GPU不兼容(如型號過舊)、顯存不足(OOM錯誤)或CPU模式性能極低。解決方案: 確認GPU支持CUDA,檢查顯存需求(如至少16GB顯存)。使用nvidia-smi監控顯存,通過降…

微機原理與接口技術期末大作業——4位搶答器仿真

在微機原理與接口技術的學習旅程中&#xff0c;期末大作業成為了檢驗知識掌握程度與實踐能力的關鍵環節。本次我選擇設計并仿真一個 4 位搶答器系統&#xff0c;通過這個項目&#xff0c;深入探索 8086CPU 及其接口技術的實際應用。附完整壓縮包下載。 一、系統設計思路 &…

解決國內服務器 npm install 卡住的問題

在使用國內云服務器時&#xff0c;經常會遇到 npm install 命令執行卡住的情況。本文將分享一個典型案例以及常見的解決方案。 問題描述 在執行以下命令時&#xff1a; mkdir test-npm cd test-npm npm init -y npm install lodash --verbose安裝過程會卡在這個狀態&#xf…

【Redis】Redis 經典面試題解析:深入理解 Redis 的核心概念與應用

Redis 是一個高性能的鍵值存儲系統&#xff0c;廣泛應用于緩存、消息隊列、排行榜等場景。在面試中&#xff0c;Redis 是一個高頻話題&#xff0c;尤其是其核心概念、數據結構、持久化機制和高可用性方案。 1. Redis 是什么&#xff1f;它的主要特點是什么&#xff1f; 答案&a…

昆侖萬維Java開發面試題及參考答案

進程和線程的區別是什么? 進程和線程都是操作系統中非常重要的概念,它們在多個方面存在顯著的區別。 從定義上看,進程是操作系統進行資源分配和調度的基本單位。每個進程都有自己獨立的內存空間,包括代碼段、數據段、堆棧段等。例如,當你在電腦上同時打開瀏覽器和音樂播放…

Visual Studio Code應用本地部署的deepseek

1.打開Visual Studio Code&#xff0c;在插件中搜索continue&#xff0c;安裝插件。 2.添加新的大語言模型&#xff0c;我們選擇ollama. 3.直接點connect&#xff0c;會鏈接本地下載好的deepseek模型。 參看上篇文章&#xff1a;deepseek本地部署-CSDN博客 4.輸入需求生成可用…

DeepSeek技術深度解析:從不同技術角度的全面探討

DeepSeek技術深度解析&#xff1a;從不同技術角度的全面探討 引言 DeepSeek是一個集成了多種先進技術的平臺&#xff0c;旨在通過深度學習和其他前沿技術來解決復雜的問題。本文將從算法、架構、數據處理以及應用等不同技術角度對DeepSeek進行詳細分析。 一、算法層面 深度學…

SpringBoot 整合 Mybatis:注解版

第一章&#xff1a;注解版 導入配置&#xff1a; <groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version> </dependency> 步驟&#xff1a; 配置數據源見 Druid…

[Linux]如何將腳本(shell script)轉換到系統管理服務器(systemd service)來運行?

[InfluxDB]Monitor Tem. and Volt of RaspberryPi and Send Message by Line Notify 在Linux中&#xff0c;shell腳本(shell script)常用於運行各種自動化的流程&#xff0c;包含API串接&#xff0c;設置和啟動應用服務等等&#xff0c;腳本語法也相對易學易讀&#xff0c;因此…

2025年最新在線模型轉換工具優化模型ncnn,mnn,tengine,onnx

文章目錄 引言最新網址地點一、模型轉換1. 框架轉換全景圖2. 安全的模型轉換3. 網站全景圖 二、轉換說明三、模型轉換流程圖四、感謝 引言 在yolov5&#xff0c;yolov8&#xff0c;yolov11等等模型轉換的領域中&#xff0c;時間成本常常是開發者頭疼的問題。最近發現一個超棒的…

理解知識蒸餾中的散度損失函數(KLDivergence/kldivloss )-以DeepSeek為例

1. 知識蒸餾簡介 什么是知識蒸餾&#xff1f; 知識蒸餾&#xff08;Knowledge Distillation&#xff09;是一種模型壓縮技術&#xff0c;目標是讓一個較小的模型&#xff08;學生模型&#xff0c;Student Model&#xff09;學習一個較大、性能更優的模型&#xff08;教師模型…

Electron使用WebAassembly實現CRC-8 MAXIM校驗

Electron使用WebAssembly實現CRC-8 MAXIM校驗 將C/C語言代碼&#xff0c;經由WebAssembly編譯為庫函數&#xff0c;可以在JS語言環境進行調用。這里介紹在Electron工具環境使用WebAssembly調用CRC-8 MAXIM格式校驗的方式。 CRC-8 MAXIM校驗函數WebAssebly源文件 C語言實現CR…

Vue3.0實戰:大數據平臺可視化

文章目錄 創建vue3.0項目項目初始化項目分辨率響應式設置項目頂部信息條創建頁面主體創建全局引入echarts和axios后臺接口創建express銷售總量圖實現完整項目下載項目任何問題都可在評論區,或者直接私信即可。 創建vue3.0項目 創建項目: vue create vueecharts選擇第三項:…

vector容器(詳解)

本文最后是模擬實現全部講解&#xff0c;文章穿插有彩色字體&#xff0c;是我總結的技巧和關鍵 1.vector的介紹及使用 1.1 vector的介紹 https://cplusplus.com/reference/vector/vector/&#xff08;vector的介紹&#xff09; 了解 1. vector是表示可變大小數組的序列容器。…

Ubuntu 下 nginx-1.24.0 源碼分析 ngx_debug_init();

目錄 ngx_debug_init() 函數&#xff1a; NGX_LINUX 的定義&#xff1a; ngx_debug_init() 函數&#xff1a; ngx_debug_init() 函數定義在 src\os\unix 目錄下的 ngx_linux_config.h 中 #define ngx_debug_init() 也就是說這個環境下的 main 函數中的 ngx_debug_init() 這…

Airflow:深入理解Apache Airflow Task

Apache Airflow是一個開源工作流管理平臺&#xff0c;支持以編程方式編寫、調度和監控工作流。由于其靈活性、可擴展性和強大的社區支持&#xff0c;它已迅速成為編排復雜數據管道的首選工具。在這篇博文中&#xff0c;我們將深入研究Apache Airflow 中的任務概念&#xff0c;探…

開發環境搭建-4:WSL 配置 docker 運行環境

在 WSL 環境中構建&#xff1a;WSL2 (2.3.26.0) Oracle Linux 8.7 官方鏡像 基本概念說明 容器技術 利用 Linux 系統的 文件系統&#xff08;UnionFS&#xff09;、命名空間&#xff08;namespace&#xff09;、權限管理&#xff08;cgroup&#xff09;&#xff0c;虛擬出一…