Spec-Zone.ru › TensorFlow 2.4

tf.linalg.svd

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

Вычисляет сингулярное разложение одного или нескольких матриц.

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

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

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

tf.compat.v1.linalg.svd, tf.compat.v1.svd

tf.linalg.svd(
    tensor, full_matrices=False, compute_uv=True, name=None
)

Вычисляет SVD каждой внутренней матрицы в tensor таким образом, что tensor[..., :, :] = u[..., :, :] * diag(s[..., :, :]) * transpose(conj(v[..., :, :]))

# a is a tensor.
# s is a tensor of singular values.
# u is a tensor of left singular vectors.
# v is a tensor of right singular vectors.
s, u, v = svd(a)
s = svd(a, compute_uv=False)
Аргументы
tensor Tensor формы [..., M, N]. Пусть P будет минимальным значением M и N.
full_matrices Если True, вычислите полные u и v. Если False (по умолчанию), вычислите только ведущие P сингулярные векторы. Игнорируется, если compute_uv равно False.
compute_uv Если True, то левые и правые сингулярные векторы будут вычислены и возвращены в u и v, соответственно. В противном случае будут вычислены только сингулярные значения, что может быть значительно быстрее.
name строка, необязательное имя операции.
Возвращаемые значения
s Сингулярные значения. Форма [..., P]. Значения отсортированы по убыванию величины, поэтому s[..., 0] — наибольшее значение, s[..., 1] — второе по величине и т. д.
u Левые сингулярные векторы. Если full_matrices равно False (по умолчанию), то форма [..., M, P]; если full_matrices равно True, то форма [..., M, M]. Не возвращаются, если compute_uv равно False.
v Правые сингулярные векторы. Если full_matrices равно False (по умолчанию), то форма [..., N, P]. Если full_matrices равно True, то форма [..., N, N]. Не возвращаются, если compute_uv равно False.

Совместимость с NumPy

В основном эквивалентно numpy.linalg.svd, за исключением

  • Порядок выходных аргументов здесь s, u, v при compute_uv равном True, в отличие от u, s, v для numpy.linalg.svd.
  • full_matrices по умолчанию False, в отличие от True для numpy.linalg.svd.
  • tf.linalg.svd использует стандартное определение SVD \(A = U \Sigma V^H\), таким образом, что левые сингулярные векторы a — это столбцы u, а правые сингулярные векторы a — это столбцы v. С другой стороны, numpy.linalg.svd возвращает сопряженное \(V^H\) в качестве третьего выходного аргумента.
import tensorflow as tf
import numpy as np
s, u, v = tf.linalg.svd(a)
tf_a_approx = tf.matmul(u, tf.matmul(tf.linalg.diag(s), v, adjoint_b=True))
u, s, v_adj = np.linalg.svd(a, full_matrices=False)
np_a_approx = np.dot(u, np.dot(np.diag(s), v_adj))
# tf_a_approx and np_a_approx should be numerically close.

© 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/r2.4/api_docs/python/tf/linalg/svd

Spec-Zone.ru

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