深度學習
基礎知識和各種網路結構實戰 ...SVD奇異值分解簡述
- 深度學習
- 前言
- 一、SVD的定義
- 二、代碼實作
- 總結
前言
奇異值分解(Singular Value Decomposition)是線性代數中一種重要的矩陣分解,奇異值分解則是特征分解在任意矩陣上的推廣,在信號處理、統計學等領域有重要應用,一、SVD的定義
SVD用于對矩陣進行分解,與特征分解不同,SVD并不要求要分解的矩陣為方陣,
假如有一個矩陣A,對它進行奇異值分解,可以得到三個矩陣:
A(m,n)=U(m,m)s(m,n)V(n,n).T
U是一個mm的方陣,構成這個矩陣的向量是正交的,稱其為左奇異向量;s是一個mn的向量,它的特點就是除對角線元素外,其余元素均為0.
V是一個n*n的方陣,其轉置(.T)亦為一個方陣,且這個矩陣是正交的,稱其為右奇異向量,
s是對角矩陣,對角元素是從大到小排的,前面的元素比較大,后面的很多元素接近0,這些對角元素就是奇異值,
二、代碼實作
import numpy as np
matrix=np.array([
[1,2],
[3,4]])
matrix_A=np.dot(matrix,matrix.T)
print(matrix_A)
U,s,V=np.linalg.svd(matrix_A)
#使用奇異值分解法將矩陣——anoter_matrix進行分解,得到U,s,V
#在s矩陣的基礎上,生成S矩陣:
#s為S的對角元素
S=np.array([[s[0],0],
[0,s[1]]])
print(s)
#利用生成的U,S,V,可以重建原來的矩陣
#一個矩陣與其轉置后的矩陣相乘是對稱矩陣
matrix_1=np.dot(U,np.dot(S,V))
print(matrix_1)
總結
期待大家和我交流,留言或者私信,一起學習,一起進步!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290566.html
標籤:AI
