tf.linalg.lstsq
Решает одну или несколько задач линейных наименьших квадратов.
tf.linalg.lstsq(
matrix, rhs, l2_regularizer=0.0, fast=True, name=None
)
matrix — это тензор формы [..., M, N], два последних измерения которого образуют матрицы размера M × N. Тензор правых частей имеет форму [..., M, K], два последних измерения которого образуют матрицы размера M × K. Вычисленный результат — это Tensor формы [..., N, K], два последних измерения которого образуют матрицы размера M × K, решающие уравнения matrix[..., :, :] * output[..., :, :] = rhs[..., :, :] в смысле наименьших квадратов.
Далее для каждой пары матрицы и правых частей в пакете будет использоваться следующая запись:
matrix=\(A \in \Re^{m \times n}\), rhs=\(B \in \Re^{m \times k}\), output=\(X \in \Re^{n \times k}\), l2_regularizer=\(\lambda\).
Если fast имеет значение True, решение вычисляется путём решения нормальных уравнений с помощью разложения Холецкого. В частности, если \(m \ge n\), то \(X = (A^T A + \lambda I)^{-1} A^T B\), что решает задачу наименьших квадратов \(X = \mathrm{argmin}_{Z \in \Re^{n \times k} } ||A Z - B||_F^2 + \lambda ||Z||_F^2\). Если \(m \lt n\), то output вычисляется как \(X = A^T (A A^T + \lambda I)^{-1} B\); при \(\lambda = 0\) это решение линейной системы с недостаточной определённостью с минимальной нормой, то есть \(X = \mathrm{argmin}_{Z \in \Re^{n \times k} } ||Z||_F^2 \), при условии \(A Z = B\). Обратите внимание, что быстрый путь численно устойчив только тогда, когда матрица \(A\) имеет полный ранг с точки зрения численной точности и её число обусловленности \(\mathrm{cond}(A) \lt \frac{1}{\sqrt{\epsilon_{mach} } }\), либо когда \(\lambda\) достаточно велико.
Если fast имеет значение False, используется алгоритм на основе численно устойчивого полного ортогонального разложения. Он вычисляет решение задачи наименьших квадратов с минимальной нормой, даже если ранг \(A\) неполный. Этот путь обычно в 6–7 раз медленнее быстрого пути. Если fast имеет значение False, то l2_regularizer игнорируется.
| Аргументы | |
|---|---|
matrix | Tensor формы [..., M, N]. |
rhs | Tensor формы [..., M, K]. |
l2_regularizer | 0-D double Tensor. Игнорируется, если fast=False. |
fast | bool. По умолчанию — True. |
name | string, необязательное имя операции. |
| Возвращает | |
|---|---|
output | Tensor формы [..., N, K], два последних измерения которого образуют матрицы размера M × K, решающие уравнения matrix[..., :, :] * output[..., :, :] = rhs[..., :, :] в смысле наименьших квадратов. |
| Вызывает исключения | |
|---|---|
NotImplementedError | linalg.lstsq в настоящее время отключена для complex128 и l2_regularizer != 0 из-за низкой точности. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/linalg/lstsq