/TensorFlow 1.15

# tf.linalg.lstsq

Solves one or more linear least-squares problems.

matrix is a tensor of shape [..., M, N] whose inner-most 2 dimensions form M-by-N matrices. Rhs is a tensor of shape [..., M, K] whose inner-most 2 dimensions form M-by-K matrices. The computed output is a Tensor of shape [..., N, K] whose inner-most 2 dimensions form M-by-K matrices that solve the equations matrix[..., :, :] * output[..., :, :] = rhs[..., :, :] in the least squares sense.

Below we will use the following notation for each pair of matrix and right-hand sides in the batch:

matrix=$$A \in \Re^{m \times n}$$, rhs=$$B \in \Re^{m \times k}$$, output=$$X \in \Re^{n \times k}$$, l2_regularizer=$$\lambda$$.

If fast is True, then the solution is computed by solving the normal equations using Cholesky decomposition. Specifically, if $$m \ge n$$ then $$X = (A^T A + \lambda I)^{-1} A^T B$$, which solves the least-squares problem $$X = \mathrm{argmin}_{Z \in \Re^{n \times k} } ||A Z - B||_F^2 + \lambda ||Z||_F^2$$. If $$m \lt n$$ then output is computed as $$X = A^T (A A^T + \lambda I)^{-1} B$$, which (for $$\lambda = 0$$) is the minimum-norm solution to the under-determined linear system, i.e. $$X = \mathrm{argmin}_{Z \in \Re^{n \times k} } ||Z||_F^2$$, subject to $$A Z = B$$. Notice that the fast path is only numerically stable when $$A$$ is numerically full rank and has a condition number $$\mathrm{cond}(A) \lt \frac{1}{\sqrt{\epsilon_{mach} } }$$ or$$\lambda$$ is sufficiently large.

If fast is False an algorithm based on the numerically robust complete orthogonal decomposition is used. This computes the minimum-norm least-squares solution, even when $$A$$ is rank deficient. This path is typically 6-7 times slower than the fast path. If fast is False then l2_regularizer is ignored.

Args
matrix Tensor of shape [..., M, N].
rhs Tensor of shape [..., M, K].
l2_regularizer 0-D double Tensor. Ignored if fast=False.
fast bool. Defaults to True.
name string, optional name of the operation.
Returns
output Tensor of shape [..., N, K] whose inner-most 2 dimensions form M-by-K matrices that solve the equations matrix[..., :, :] * output[..., :, :] = rhs[..., :, :] in the least squares sense.
Raises
NotImplementedError linalg.lstsq is currently disabled for complex128 and l2_regularizer != 0 due to poor accuracy.

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/linalg/lstsq