Spec-Zone.ru › TensorFlow 1.15

tf.linalg.svd

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

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

Псевдонимы

Основные псевдонимы

`tf.svd`

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

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

tf.compat.v1.linalg.svd, tf.compat.v1.svd, `tf.compat.v2.linalg.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/r1.15/api_docs/python/tf/linalg/svd

Spec-Zone.ru

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