評價此頁

torch.svd_lowrank#

torch.svd_lowrank(A, q=6, niter=2, M=None)[原始碼]#

返回矩陣、矩陣批次或稀疏矩陣 AA 的奇異值分解 (U, S, V),使得 AUdiag(S)VHA \approx U \operatorname{diag}(S) V^{\text{H}}. 如果給出了 MM,則對矩陣 AMA - M 進行 SVD 計算。

注意

該實現基於 Halko 等人 2009 年的演算法 5.1。

注意

對於一個 k 秩矩陣 AA 的充分近似,其中 k 未知,但可以估算,Q 列的數量 q 可以根據以下標準選擇:通常 k<=q<=min(2k,m,n)k <= q <= min(2*k, m, n). 對於大型低秩矩陣,取 q=k+5..10q = k + 5..10. 如果 k 相對於 min(m,n)min(m, n) 相對較小,選擇 q=k+0..2q = k + 0..2 可能就足夠了。

注意

這是一個隨機方法。為了獲得可重複的結果,請設定偽隨機數生成器的種子。

注意

總的來說,對於密集矩陣,由於其效能提高 10 倍的特點,請使用全秩 SVD 實現 torch.linalg.svd()。低秩 SVD 對於 torch.linalg.svd() 無法處理的超大稀疏矩陣會很有用。

引數:

A (Tensor): 輸入張量,大小為 (,m,n)(*, m, n)

q (int, optional): A 的一個略微過估計的秩。

niter (int, optional): 要進行的子空間迭代次數;niter 必須是非負整數,預設為 2

conduct; niter must be a nonnegative integer, and defaults to 2

M (Tensor, optional): 輸入張量的均值,大小為

(,m,n)(*, m, n),在函式中將廣播到 A 的大小。

參考文獻:
  • Nathan Halko, Per-Gunnar Martinsson, and Joel Tropp, Finding structure with randomness: probabilistic algorithms for constructing approximate matrix decompositions, arXiv:0909.4061 [math.NA; math.PR], 2009 (可在此處獲取 arXiv)。

返回型別

tuple[torch.Tensor, torch.Tensor, torch.Tensor]