jax.lax.linalg.qr#
- jax.lax.linalg.qr(x: ArrayLike, *, pivoting: Literal[False], full_matrices: bool = True, use_magma: bool | None = None) tuple[Array, Array] [source]#
- jax.lax.linalg.qr(x: ArrayLike, *, pivoting: Literal[True], full_matrices: bool = True, use_magma: bool | None = None) tuple[Array, Array, Array]
- jax.lax.linalg.qr(x: ArrayLike, *, pivoting: bool = False, full_matrices: bool = True, use_magma: bool | None = None) tuple[Array, Array] | tuple[Array, Array, Array]
QR 分解。
计算 QR 分解
\[A = Q \, R\]对于矩阵 \(A\),其中 \(Q\) 是一个酉(正交)矩阵,而 \(R\) 是一个上三角矩阵。
- 参数:
x – 形状为
[..., m, n]
的一批矩阵。pivoting – 允许 QR 分解揭示秩。 如果
True
,则计算列主元分解A[:, P] = Q @ R
,其中选择P
使得R
的对角线是非递增的。 目前仅在 CPU 和 GPU 后端支持。full_matrices – 确定是返回完整矩阵还是缩减矩阵;请参见下文。
use_magma – 在本地覆盖
jax_use_magma
标志。 如果True
,则使用 MAGMA 计算主元 qr 分解。 如果False
,则使用主机 CPU 上的 LAPACK 进行计算。 如果None
(默认),则行为由jax_use_magma
标志控制。 此参数仅在 GPU 上使用。
- 返回:
一对数组
(q, r)
,如果pivoting=False
,否则为(q, r, p)
。数组
q
是一个酉(正交)矩阵,如果full_matrices=True
,则形状为[..., m, m]
,如果full_matrices=False
,则形状为[..., m, min(m, n)]
。数组
r
是一个上三角矩阵,如果full_matrices=True
,则形状为[..., m, n]
,如果full_matrices=False
,则形状为[..., min(m, n), n]
。数组
p
是形状为 […, n] 的索引向量
注意事项
MAGMA 支持是实验性的 - 请参阅
jax.lax.linalg.eig()
了解更多假设和限制。如果
jax_use_magma
设置为"auto"
,如果可以找到该库,并且输入矩阵足够大(至少有 2048 列),则将使用 MAGMA 实现。