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
个块,在k
个m * n
的QR分解之后,将会有一个“单一核心”的QR分解,它将不得不处理一个(k * n, n)
矩阵。在这里,必要时应用递归来确保
k * n
不大于m``(如果 ``m / n >= 2
)。特别是,这样做是为了确保单核计算不必处理大于(m, n)
的块。在块不规则的情况下,上述逻辑应用于使用“最高”块的“高度”来代替
m
。考虑使用
rechunk
方法来控制此行为。更高的块将减少总体内存使用(假设其中许多块仍能一次性放入内存中)。