torch.lu_unpack (original) (raw)
torch.lu_unpack(LU_data, LU_pivots, unpack_data=True, unpack_pivots=True, *, out=None)#
Unpacks the LU decomposition returned by lu_factor() into the P, L, U matrices.
See also
lu() returns the matrices from the LU decomposition. Its gradient formula is more efficient than that of doing lu_factor() followed by lu_unpack().
Parameters
- LU_data (Tensor) – the packed LU factorization data
- LU_pivots (Tensor) – the packed LU factorization pivots
- unpack_data (bool) – flag indicating if the data should be unpacked. If
False, then the returnedLandUare empty tensors. Default:True - unpack_pivots (bool) – flag indicating if the pivots should be unpacked into a permutation matrix
P. IfFalse, then the returnedPis an empty tensor. Default:True
Keyword Arguments
out (tuple, optional) – output tuple of three tensors. Ignored if None.
Returns
A namedtuple (P, L, U)
Examples:
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