Spec-Zone.ru › TensorFlow 2.9

tf.linalg.pinv

Просмотреть исходный код на GitHub

Вычислить псевдообратное обращение Мура-Пенроуза для одной или нескольких матриц.

Просмотр псевдонимов

Псевдонимы для миграции

См. Руководство по миграции для получения более подробной информации.

tf.compat.v1.linalg.pinv

tf.linalg.pinv(
    a, rcond=None, validate_args=False, name=None
)

Вычислить обобщённое обращение матрицы с использованием её разложения по сингулярным значениям (SVD) и включением всех больших сингулярных значений.

Псевдообращение матрицы A, определяется как: 'матрица, которая "решает" [задачу наименьших квадратов] A @ x = b,' т.е., если x_hat является решением, то A_pinv - это матрица, такая что x_hat = A_pinv @ b. Можно показать, что если U @ Sigma @ V.T = A является разложением по сингулярным значениям матрицы A, то A_pinv = V @ inv(Sigma) U^T. [(Strang, 1980)][1]

Эта функция аналогична numpy.linalg.pinv. Она отличается только значением по умолчанию rcond. В numpy.linalg.pinv, значение по умолчанию rcond равно 1e-15. Здесь значение по умолчанию - 10. * max(num_rows, num_cols) * np.finfo(dtype).eps.

Аргументы
a (Группа) матрица(ы) типа float, которые необходимо псевдообратить.
rcond Tensor малых сингулярных значений для отсечения. Сингулярные значения, меньшие (по модулю) чем rcond * largest_singular_value (опять же, по модулю), устанавливаются в ноль. Должно соответствовать tf.shape(a)[:-2]. Значение по умолчанию: 10. * max(num_rows, num_cols) * np.finfo(a.dtype).eps.
validate_args Когда True, в графе могут быть добавлены дополнительные утверждения. Значение по умолчанию: False (т.е., утверждения графа не добавляются).
name Префикс Python str для операций, созданных этой функцией. Значение по умолчанию: 'pinv'.
Возвращаемое значение
a_pinv (Группа) псевдообращение входных a. Имеет такую же форму, как a, за исключением того, что две правые размерности транспонированы.
Исключения
TypeError если входные a не имеют float-подобной dtype.
ValueError если входные a имеют меньше 2 размерностей.

Примеры

import tensorflow as tf
import tensorflow_probability as tfp

a = tf.constant([[1.,  0.4,  0.5],
                 [0.4, 0.2,  0.25],
                 [0.5, 0.25, 0.35]])
tf.matmul(tf.linalg.pinv(a), a)
# ==> array([[1., 0., 0.],
             [0., 1., 0.],
             [0., 0., 1.]], dtype=float32)

a = tf.constant([[1.,  0.4,  0.5,  1.],
                 [0.4, 0.2,  0.25, 2.],
                 [0.5, 0.25, 0.35, 3.]])
tf.matmul(tf.linalg.pinv(a), a)
# ==> array([[ 0.76,  0.37,  0.21, -0.02],
             [ 0.37,  0.43, -0.33,  0.02],
             [ 0.21, -0.33,  0.81,  0.01],
             [-0.02,  0.02,  0.01,  1.  ]], dtype=float32)

Ссылки

[1]: Г. Странг. 'Линейная алгебра и её приложения, 2-е изд.' Academic Press, Inc., 1980, стр. 139-142.

© 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/pinv

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API