torch.linalg.ldl_factor_ex

torch.linalg.ldl_factor_ex(A, *, hermitian=False, check_errors=False, out=None)

这是ldl_factor() 的一个版本,除非check_errors=True,否则不会执行错误检查。它还返回由LAPACK的sytrf 返回的info 张量。info 存储了后端库中的整数错误代码。一个正整数表示$D$ 的对角线元素为零,如果用于求解线性方程组,则会出现除以0的情况。info 填充为零表示因式分解成功。如果check_errors=Trueinfo 包含正整数,则会抛出RuntimeError

注意

当输入位于CUDA设备上且check_errors设为True时,该函数才会进行同步。

警告

此功能为“试验性”,未来版本的 PyTorch 中可能有所更改。

参数

A (Tensor) – 形状为(*, n, n)的张量,其中*表示零个或多个批次维度,包含对称或厄米矩阵。

关键字参数
  • hermitian (bool, 可选) – 是否将输入视为厄米矩阵或对称矩阵。对于实值矩阵,此设置没有影响。默认值: False

  • check_errors (bool, 可选) – 控制是否检查 info 的内容并在其非零时引发错误。默认值:False

  • out (元组, 可选) – 要写入输出的三个张量组成的元组。如果为None则忽略。默认值:None

返回值

(LD, pivots, info) 这个命名元组。

示例:

>>> A = torch.randn(3, 3)
>>> A = A @ A.mT # make symmetric
>>> A
tensor([[7.2079, 4.2414, 1.9428],
        [4.2414, 3.4554, 0.3264],
        [1.9428, 0.3264, 1.3823]])
>>> LD, pivots, info = torch.linalg.ldl_factor_ex(A)
>>> LD
tensor([[ 7.2079,  0.0000,  0.0000],
        [ 0.5884,  0.9595,  0.0000],
        [ 0.2695, -0.8513,  0.1633]])
>>> pivots
tensor([1, 2, 3], dtype=torch.int32)
>>> info
tensor(0, dtype=torch.int32)
本页目录