torch.svd_lowrank
- torch.svd_lowrank(A, q=6, niter=2, M=None)[源代码]
-
返回矩阵、矩阵批次或稀疏矩阵$A$的奇异值分解
(U, S, V)
,使得$A \approx U \operatorname{diag}(S) V^{\text{H}}$。如果给定了矩阵$M$,则计算矩阵$A - M$的SVD。注意
实现基于Halko等人的算法5.1(2009年)。
注意
对于一个适当的k秩矩阵$A$的近似值(其中k事先未知但可以估计),$Q$列的数量q可以根据以下标准选择:通常情况下,$k <= q <= min(2*k, m, n)$。对于大型低秩矩阵,可以取$q = k + 5..10$。如果k相对于$min(m, n)$来说相对较小,则选择$q = k + 0..2$可能是足够的。
注意
这是一个随机化的方法。为了得到可重复的结果,需要设置伪随机数生成器的种子。
注意
一般来说,由于其10倍更高的性能特性,对于稠密矩阵应使用全秩SVD实现
torch.linalg.svd()
。低秩SVD则对那些torch.linalg.svd()
无法处理的巨大稀疏矩阵非常有用。- 参数:
-
输入张量(A)的大小为$(*, m, n)$
q (int, 可选): 略微高估的矩阵 A 的秩。
- niter (int, 可选): 子空间迭代的次数
-
执行;niter必须是非负整数,默认值为2
- M (Tensor, 可选): 输入张量的均值,形状为
-
$(*, m, n)$,该张量将在此函数中广播成与A相同的大小。
- 参考:
-
-
Nathan Halko, Per-Gunnar Martinsson 和 Joel Tropp,使用随机性寻找结构:构造近似矩阵分解的概率算法,arXiv:0909.4061 [math.NA; math.PR],2009(可在 arXiv 获取)。
-