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 获取)。
- 返回类型