tf.linalg.lstsq
| Просмотреть исходный код на GitHub |
Решает одну или несколько задач линейной наименьших квадратов.
tf.linalg.lstsq(
matrix, rhs, l2_regularizer=0.0, fast=True, name=None
)
matrix — это тензор формы [..., M, N], чьи внутренние 2 измерения образуют матрицы M×N. Rhs — это тензор формы [..., M, K], чьи внутренние 2 измерения образуют матрицы M×K. Вычисляемый результат — это Tensor формы [..., N, K], чьи внутренние 2 измерения образуют матрицы 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-мерное double Tensor. Игнорируется, если fast=False. |
fast | bool. По умолчанию True. |
name | строка, необязательное имя операции. |
| Возвращаемое значение | |
|---|---|
output | Tensor формы [..., N, K], чьи внутренние 2 измерения образуют матрицы 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/versions/r2.9/api_docs/python/tf/linalg/lstsq