torch.lstsq¶
-
torch.
lstsq
(input, A, *, out=None)¶ Computes the solution to the least squares and least norm problems for a full rank matrix of size and a matrix of size .
If ,
lstsq()
solves the least-squares problem:If ,
lstsq()
solves the least-norm problem:Returned tensor has shape . The first rows of contains the solution. If , the residual sum of squares for the solution in each column is given by the sum of squares of elements in the remaining rows of that column.
Warning
torch.lstsq()
is deprecated in favor oftorch.linalg.lstsq()
and will be removed in a future PyTorch release.torch.linalg.lstsq()
has reversed arguments and does not return the QR decomposition in the returned tuple, (it returns other information about the problem). The returned solution intorch.lstsq()
stores the residuals of the solution in the last m - n columns in the case m > n. Intorch.linalg.lstsq()
, the residuals are in the field ‘residuals’ of the returned named tuple.Unpacking the solution as
X = torch.lstsq(B, A).solution[:A.size(1)]
should be replaced withX = torch.linalg.lstsq(A, B).solution
Note
The case when is not supported on the GPU.
- Parameters
- Keyword Arguments
out (tuple, optional) – the optional destination tensor
- Returns
A namedtuple (solution, QR) containing:
solution (Tensor): the least squares solution
QR (Tensor): the details of the QR factorization
- Return type
Note
The returned matrices will always be transposed, irrespective of the strides of the input matrices. That is, they will have stride (1, m) instead of (m, 1).
Example:
>>> A = torch.tensor([[1., 1, 1], ... [2, 3, 4], ... [3, 5, 2], ... [4, 2, 5], ... [5, 4, 3]]) >>> B = torch.tensor([[-10., -3], ... [ 12, 14], ... [ 14, 12], ... [ 16, 16], ... [ 18, 16]]) >>> X, _ = torch.lstsq(B, A) >>> X tensor([[ 2.0000, 1.0000], [ 1.0000, 1.0000], [ 1.0000, 2.0000], [ 10.9635, 4.8501], [ 8.9332, 5.2418]])