torch.svd_lowrank¶
- torch.svd_lowrank(A, q=6, niter=2, M=None)[source][source]¶
返回矩阵、批量矩阵或稀疏矩阵 的奇异值分解
(U, S, V)
,使得 。如果提供了 ,则计算矩阵 的 SVD。注意
此实现基于 Halko 等人于 2009 年提出的算法 5.1。
注意
对于矩阵 的充分 k 秩近似,其中 k 是未知但可以估计的, 列的数量 q 可以根据以下标准选择:通常情况下,。对于大型低秩矩阵,选择 。如果 k 相对于 较小,选择 可能就足够了。
注意
这是一种随机方法。要获得可重复的结果,请设置伪随机数生成器的种子。
注意
一般来说,对于密集矩阵,由于其性能高出 10 倍,请使用全秩 SVD 实现
torch.linalg.svd()
。低秩 SVD 对于torch.linalg.svd()
无法处理的巨大稀疏矩阵将很有用。- 参数:
A (张量): 输入张量,其大小为
q (int, 可选): 对 A 的秩稍作高估的值。
- niter (int, 可选): 子空间迭代次数。
niter 必须是非负整数,默认为 2。
- M (张量, 可选): 输入张量的均值,其大小为
,在此函数中将广播到 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 获取)。
- 返回类型