dask.array.linalg.svd_compressed
dask.array.linalg.svd_compressed¶
- dask.array.linalg.svd_compressed(a, k, iterator='power', n_power_iter=0, n_oversamples=10, seed=None, compute=False, coerce_signs=True)[源代码]¶
随机压缩的秩-k 薄奇异值分解。
这计算了一个大型数组的近似奇异值分解。此算法通常比普通算法更快,但不提供精确结果。可以通过输入参数在性能和准确性之间进行权衡(见下文)。
- 参数
- a: 数组
输入数组
- k: int
所需薄SVD分解的秩。
- 迭代器: {‘power’, ‘QR’}, 默认=’power’
定义用于迭代的技术以处理平坦的奇异谱或当输入矩阵非常大时。
- n_power_iter: int, default=0
功率迭代次数,当奇异值衰减缓慢时很有用。误差随着 n_power_iter 的增加呈指数级减少。在实践中,设置 n_power_iter <= 4。
- n_oversamples: int, 默认=10
用于生成采样矩阵的过采样数量。此值增加了计算的子空间的大小,这在提高准确性的同时牺牲了效率。然而,结果对这一选择通常不敏感,在实践中,值为10通常已经足够高。
- 计算布尔
是否在每次使用时计算数据。在执行多次传递时重新计算输入可以减少内存压力,但这意味着我们必须多次计算输入。如果数据大于内存且易于重新创建,这是一个不错的选择。
- 强制符号布尔
是否对奇异向量应用符号强制,以通过默认的 True 来保持确定性结果。
- 返回
- u: 数组, 酉 / 正交
- s: 数组,按降序排列的奇异值(最大的在前)
- v: 数组, 单一 / 正交
参考文献
N. Halko, P. G. Martinsson, and J. A. Tropp. Finding structure with randomness: Probabilistic algorithms for constructing approximate matrix decompositions. SIAM Rev., Survey and Review section, Vol. 53, num. 2, pp. 217-288, June 2011 https://arxiv.org/abs/0909.4061
示例
>>> u, s, v = svd_compressed(x, 20)