Shortcuts

torch.lu_unpack

torch.lu_unpack(LU_data, LU_pivots, unpack_data=True, unpack_pivots=True, *, out=None)

将由 lu_factor() 返回的LU分解解包为 P, L, U 矩阵。

另请参阅

lu() 返回LU分解的矩阵。其梯度公式比先进行 lu_factor() 再进行 lu_unpack() 更高效。

Parameters
  • LU_data (张量) – 打包的LU分解数据

  • LU_pivots (张量) – 打包的LU分解旋转

  • unpack_data (bool) – 指示是否应解包数据的标志。 如果 False,则返回的 LU 是空张量。 默认值:True

  • unpack_pivots (bool) – 标志,指示是否应将枢轴解包为置换矩阵 P。 如果 False,则返回的 P 是一个空张量。 默认值:True

Keyword Arguments

out (tuple, 可选) – 包含三个张量的输出元组。如果为None则忽略。

Returns

一个命名的元组 (P, L, U)

示例:

>>> A = torch.randn(2, 3, 3)
>>> LU, pivots = torch.linalg.lu_factor(A)
>>> P, L, U = torch.lu_unpack(LU, pivots)
>>> # 我们可以从因式分解中恢复A
>>> A_ = P @ L @ U
>>> torch.allclose(A, A_)
True

>>> # 矩形矩阵的LU分解:
>>> A = torch.randn(2, 3, 2)
>>> LU, pivots = torch.linalg.lu_factor(A)
>>> P, L, U = torch.lu_unpack(LU, pivots)
>>> # P, L, U与linalg.lu返回的相同
>>> P_, L_, U_ = torch.linalg.lu(A)
>>> torch.allclose(P, P_) and torch.allclose(L, L_) and torch.allclose(U, U_)
True