torch.triangular_solve — PyTorch 2.7 documentation (original) (raw)

torch.triangular_solve(b, A, upper=True, transpose=False, unitriangular=False, *, out=None)

Solves a system of equations with a square upper or lower triangular invertible matrix AAand multiple right-hand sides bb.

In symbols, it solves AX=bAX = b and assumes AA is square upper-triangular (or lower-triangular if upper= False) and does not have zeros on the diagonal.

torch.triangular_solve(b, A) can take in 2D inputs b, A or inputs that are batches of 2D matrices. If the inputs are batches, then returns batched outputs X

If the diagonal of A contains zeros or elements that are very close to zero andunitriangular= False (default) or if the input matrix is badly conditioned, the result may contain NaN s.

Supports input of float, double, cfloat and cdouble data types.

Warning

torch.triangular_solve() is deprecated in favor of torch.linalg.solve_triangular()and will be removed in a future PyTorch release.torch.linalg.solve_triangular() has its arguments reversed and does not return a copy of one of the inputs.

X = torch.triangular_solve(B, A).solution should be replaced with

X = torch.linalg.solve_triangular(A, B)

Parameters

Keyword Arguments

out ((Tensor, Tensor) , optional) – tuple of two tensors to write the output to. Ignored if None. Default: None.

Returns

A namedtuple (solution, cloned_coefficient) where cloned_coefficientis a clone of AA and solution is the solution XX to AX=bAX = b(or whatever variant of the system of equations, depending on the keyword arguments.)

Examples:

A = torch.randn(2, 2).triu() A tensor([[ 1.1527, -1.0753], [ 0.0000, 0.7986]]) b = torch.randn(2, 3) b tensor([[-0.0210, 2.3513, -1.5492], [ 1.5429, 0.7403, -1.0243]]) torch.triangular_solve(b, A) torch.return_types.triangular_solve( solution=tensor([[ 1.7841, 2.9046, -2.5405], [ 1.9320, 0.9270, -1.2826]]), cloned_coefficient=tensor([[ 1.1527, -1.0753], [ 0.0000, 0.7986]]))