Spec-Zone.ru › TensorFlow 2.9

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.

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

Spec-Zone.ru

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