torch.cholesky

torch.cholesky(input, upper=False, *, out=None) Tensor

计算对称正定矩阵$A$或一批对称正定矩阵的乔莱斯基分解。

如果 upperTrue,则返回的矩阵 U 是上三角矩阵,分解形式如下:

$A = U^TU$

如果 upperFalse,则返回的矩阵 L 是下三角矩阵,其分解形式如下:

$A = LL^T$

如果 upperTrue,并且$A$ 是一批对称正定矩阵,则返回的张量将包含每个矩阵的上三角 Cholesky 因子。类似地,当upperFalse 时,返回的张量将包含每个矩阵的下三角 Cholesky 因子。

警告

torch.cholesky() 已被 torch.linalg.cholesky() 替代,并将在未来的 PyTorch 版本中被淘汰。

应将 L = torch.cholesky(A) 替换为

L = torch.linalg.cholesky(A)

应将 U = torch.cholesky(A, upper=True) 替换为

U = torch.linalg.cholesky(A).mH

此变换对于所有有效输入(对称正定矩阵),将产生等效结果。

参数
  • input (Tensor) – 输入张量$A$,其大小为$(*, n, n)$,其中*表示零个或多个批次维度,每个批次维度由对称正定矩阵组成。

  • upper (bool, 可选) – 一个标志,用于指示是否返回上三角矩阵。默认值:False

关键字参数

out (Tensor, 可选) – 输出的矩阵

示例:

>>> a = torch.randn(3, 3)
>>> a = a @ a.mT + 1e-3 # make symmetric positive-definite
>>> l = torch.cholesky(a)
>>> a
tensor([[ 2.4112, -0.7486,  1.4551],
        [-0.7486,  1.3544,  0.1294],
        [ 1.4551,  0.1294,  1.6724]])
>>> l
tensor([[ 1.5528,  0.0000,  0.0000],
        [-0.4821,  1.0592,  0.0000],
        [ 0.9371,  0.5487,  0.7023]])
>>> l @ l.mT
tensor([[ 2.4112, -0.7486,  1.4551],
        [-0.7486,  1.3544,  0.1294],
        [ 1.4551,  0.1294,  1.6724]])
>>> a = torch.randn(3, 2, 2) # Example for batched input
>>> a = a @ a.mT + 1e-03 # make symmetric positive-definite
>>> l = torch.cholesky(a)
>>> z = l @ l.mT
>>> torch.dist(z, a)
tensor(2.3842e-07)
本页目录