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,可选):A 的略微高估的排名。
- niter(int,可选):子空间迭代的次数
执行;niter 必须是非负整数,默认为 2- M(Tensor,可选):输入张量的平均值的尺寸
在此函数中将广播到 A 的大小。
- 参考文献:
Nathan Halko, Per-Gunnar Martinsson, 和 Joel Tropp, 利用随机性寻找结构:构建近似矩阵分解的概率算法,arXiv:0909.4061 [math.NA; math.PR],2009(可在 arXiv 上获取)。
- 返回类型:
元组[torch.Tensor, torch.Tensor, torch.Tensor]