Spec-Zone.ru › TensorFlow

tf.linalg.svd

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

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

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

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

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

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

Используется в ноутбуках

Используется в руководстве
  • Матричное приближение с помощью базовых API

Вычисляет 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 Матрица формы [..., 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ΣVH), где левые сингулярные векторы матрицы A — столбцы U, а правые сингулярные векторы — столбцы V. С другой стороны, numpy.linalg.svd возвращает сопряжённое (VH) как третий выходной аргумент.
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/api_docs/python/tf/linalg/svd

Spec-Zone.ru

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