评价此页

torch.svd_lowrank#

torch.svd_lowrank(A, q=6, niter=2, M=None)[源码]#

返回一个矩阵、矩阵批次或稀疏矩阵 AA 的奇异值分解 (U, S, V),使得 A. 如果提供了 MM,则计算矩阵 AMA - M 的 SVD。

注意

该实现基于 Halko 等人 2009 年的算法 5.1。

注意

对于一个 k 秩矩阵 AA 的充分近似,其中 k 未知但可以估计,则 QQ 列的数量 q 可以根据以下标准选择:通常,k<=q<=min(2k,m,n)k <= q <= min(2*k, m, n)。对于大型低秩矩阵,选择 q=k+5..10q = k + 5..10。如果 k 相对于 min(m,n)min(m, n) 而言相对较小,选择 q=k+0..2q = k + 0..2 可能就足够了。

注意

这是一个随机方法。为了获得可重复的结果,请设置伪随机数生成器的种子。

注意

通常,对于密集矩阵,请使用全秩 SVD 实现 torch.linalg.svd(),因为它的性能高出 10 倍。低秩 SVD 将适用于 torch.linalg.svd() 无法处理的超大型稀疏矩阵。

参数:

A (Tensor): 输入张量,大小为 (,m,n)(*, m, n)

q (int, optional): A 的略微过高的秩。

niter (int, optional): 要执行的子空间迭代次数

执行;niter 必须是非负整数,默认为 2

M (Tensor, optional): 输入张量的均值,大小为

(,m,n)(*, m, n),它将在函数中广播到 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 获取)。

返回类型

tuple[torch.Tensor, torch.Tensor, torch.Tensor]

文档

访问全面的 PyTorch 开发者文档

查看文档

教程

为初学者和高级开发者提供深入的教程

查看教程

资源

查找开发资源并让您的问题得到解答

查看资源