dask.array.linalg.tsqr

dask.array.linalg.tsqr

dask.array.linalg.tsqr(data, compute_svd=False, _max_vchunk_size=None)[源代码]

直接高瘦QR算法

如所呈现的:

A. Benson, D. Gleich, and J. Demmel. Direct QR factorizations for tall-and-skinny matrices in MapReduce architectures. IEEE International Conference on Big Data, 2013. https://arxiv.org/abs/1301.1071

该算法用于计算QR分解和奇异值分解。它要求输入数组具有单列块,每个块都适合内存。

参数
数据: 数组
compute_svd: bool

是否计算 SVD 而不是 QR 分解

_max_vchunk_size: 整数

在递归内部使用,以设置后续递归调用中块的最大行维度。

参见

dask.array.linalg.qr

由这个算法驱动

dask.array.linalg.svd

由这个算法驱动

dask.array.linalg.sfqr

短而宽数组的变体

注释

使用 k 个大小为 (m, n) 的块,此算法的内存使用量按 k * n * n 的比例扩展。

这里的实现是递归变体,由于最终需要一个“单一核心”的QR分解。在算法的非递归版本中,给定 k 个块,在 km * n 的QR分解之后,将会有一个“单一核心”的QR分解,它将不得不处理一个 (k * n, n) 矩阵。

在这里,必要时应用递归来确保 k * n 不大于 m``(如果 ``m / n >= 2)。特别是,这样做是为了确保单核计算不必处理大于 (m, n) 的块。

在块不规则的情况下,上述逻辑应用于使用“最高”块的“高度”来代替 m

考虑使用 rechunk 方法来控制此行为。更高的块将减少总体内存使用(假设其中许多块仍能一次性放入内存中)。