torch.svd_lowrank¶
- torch.svd_lowrank(A, q=6, niter=2, M=None)[原始碼][原始碼]¶
傳回矩陣、批次矩陣或稀疏矩陣 的奇異值分解
(U, S, V)
,使得 。 如果給定了 ,則會計算矩陣 的 SVD。注意
此實現基於 Halko 等人,2009 年的演算法 5.1。
注意
為了充分逼近 k 階矩陣 ,其中 k 事先未知但可以估計, 的列數 q 可以根據以下標準選擇:一般而言,。 對於大型低秩矩陣,取 。 如果 k 相對於 較小,則選擇 可能就足夠了。
注意
這是一種隨機方法。 要獲得可重複的結果,請設定虛擬亂數產生器的種子。
注意
一般而言,對於密集矩陣,請使用全秩 SVD 實現
torch.linalg.svd()
,因為它的效能特性高出 10 倍。 低秩 SVD 適用於torch.linalg.svd()
無法處理的巨型稀疏矩陣。- 引數:
A (Tensor):大小為 的輸入張量
q (int, optional):稍微高估的 A 的秩。
- niter (int, optional):要執行的子空間疊代次數;
執行; niter 必須為非負整數,預設為 2
- M (Tensor, optional):輸入張量的大小為
,在這個函數中將會廣播至 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 取得)。