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 获取)。

返回类型

Tuple[Tensor, Tensor, Tensor]

本页目录