Функция PyTorch torch.linalg.svd
Справочное руководство PyTorch torch
torch.linalg.svd— это функция в модуле линейной алгебры PyTorch, используемая для вычисления сингулярного разложения (SVD) матрицы. SVD разлагает матрицу как A = U * diag(S) * V^T.
Определение функции
torch.linalg.svd(A, full_matrices=False, out=None)
Parameters:
A(Tensor): входная матрица.full_matrices(bool, необязательный): Если True, возвращает полные матрицы U и V. По умолчанию False.out(tuple, optional): Выходной кортеж.
Возвращаемое значение:
tuple: Возвращает кортеж (U, S, Vh), где Vh — транспонированная V.
Пример использования
Пример
import torch
# Создать матрицу
A = torch.tensor([[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0],
[7.0, 8.0, 9.0],
[10.0, 11.0, 12.0]])
# SVD-разложение
U, S, Vh = torch.linalg.svd(A)
print("Матрица A:")
print(A)
print("nU размер:", U.shape)
print("Сингулярные значения S:", S)
print("Vh размер:", Vh.shape)
print("nПроверка: U @ diag(S) @ Vh =")
print(U @ torch.diag(S) @ Vh)
# Создать матрицу
A = torch.tensor([[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0],
[7.0, 8.0, 9.0],
[10.0, 11.0, 12.0]])
# SVD-разложение
U, S, Vh = torch.linalg.svd(A)
print("Матрица A:")
print(A)
print("nU размер:", U.shape)
print("Сингулярные значения S:", S)
print("Vh размер:", Vh.shape)
print("nПроверка: U @ diag(S) @ Vh =")
print(U @ torch.diag(S) @ Vh)
Результат вывода:
矩阵 A:
tensor([[ 1., 2., 3.],
[ 4., 5., 6.],
[ 7., 8., 9.],
[10., 11., 12.]])
U 形状: torch.Size([4, 4])
奇异值 S: tensor([25.4627, 1.2907, 0.0000])
Vh 形状: torch.Size([3, 3])
验证: U @ diag(S) @ Vh =
tensor([[ 1.0000, 2.0000, 3.0000],
[ 4.0000, 5.0000, 6.0000],
[ 7.0000, 8.0000, 9.0000],
[10.0000, 11.0000, 12.0000]])
Другие расширения