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()
的效率更高。- 参数:
LU_data(张量)- 压缩的 LU 分解数据
LU_pivots(张量)- 压缩的 LU 分解的置换
unpack_data(布尔值)- 标志表示是否应该解包数据。如果
False
,则返回的L
和U
为空张量。默认:True
unpack_pivots(布尔值)- 标志表示是否应该将置换解包到置换矩阵
P
中。如果False
,则返回的P
为空张量。默认:True
- 关键字参数:
out (元组,可选) – 三个张量的输出元组。如果为 None,则忽略。
- 返回值:
namedtuple
(P, L, U)
示例:
>>> A = torch.randn(2, 3, 3) >>> LU, pivots = torch.linalg.lu_factor(A) >>> P, L, U = torch.lu_unpack(LU, pivots) >>> # We can recover A from the factorization >>> A_ = P @ L @ U >>> torch.allclose(A, A_) True >>> # LU factorization of a rectangular matrix: >>> A = torch.randn(2, 3, 2) >>> LU, pivots = torch.linalg.lu_factor(A) >>> P, L, U = torch.lu_unpack(LU, pivots) >>> # P, L, U are the same as returned by linalg.lu >>> P_, L_, U_ = torch.linalg.lu(A) >>> torch.allclose(P, P_) and torch.allclose(L, L_) and torch.allclose(U, U_) True