torch.svd_lowrank¶
- torch.svd_lowrank(A, q=6, niter=2, M=None)[源代码]¶
返回矩阵、矩阵批次或稀疏矩阵 的奇异值分解
(U, S, V)
,使得 . 如果给出了 ,则为矩阵 计算 SVD。注意
实现基于 Halko 等人 2009 年的算法 5.1。
注意
对于 k 秩矩阵 的充分近似,其中 k 事先未知但可以估计, 列数 q 可以根据以下标准选择:一般情况下,. 对于大型低秩矩阵,取 . 如果 k 相对于 较小,选择 可能就足够了。
注意
这是一种随机方法。要获得可重复的结果,请为伪随机数生成器设置种子
注意
一般来说,对于稠密矩阵,由于其性能特点高出 10 倍,请使用全秩 SVD 实现
torch.linalg.svd()
。低秩 SVD 将对torch.linalg.svd()
无法处理的巨大稀疏矩阵很有用。- 参数:
A (张量): 大小为 的输入张量
q (int, 可选): A 的稍微高估的秩。
- niter (int, 可选): 子空间迭代的次数
进行;niter 必须是非负整数,默认为 2
- M (张量, 可选): 输入张量的均值,大小为
,它将在本函数中广播到 A 的大小。
- 参考文献:
Nathan Halko、Per-Gunnar Martinsson 和 Joel Tropp,使用随机性寻找结构:用于构建近似矩阵分解的概率算法,arXiv:0909.4061 [math.NA; math.PR],2009(可在 arXiv 获得)。