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 相对于 相对较小,则选择 可能就足够了。
注意
这是一种随机方法。 要获得可重复的结果,请设置伪随机数生成器的种子
注意
一般来说,由于全秩 SVD 实现
torch.linalg.svd()
具有高 10 倍的性能特性,因此对于密集矩阵,请使用该实现。 低秩 SVD 将适用于torch.linalg.svd()
无法处理的巨型稀疏矩阵。- Args:
A (Tensor): 大小为 的输入张量
q (int, optional): A 的略微高估的秩。
- niter (int, optional): 要执行的子空间迭代次数;
niter 必须是非负整数,默认为 2
- M (Tensor, optional): 大小为
的输入张量的均值,它将在此函数中广播到 A 的大小。
- 参考文献:
Nathan Halko, Per-Gunnar Martinsson 和 Joel Tropp, Finding structure with randomness: probabilistic algorithms for constructing approximate matrix decompositions, arXiv:0909.4061 [math.NA; math.PR], 2009 (可在 arXiv 上获取)。