Функция torch.svd_lowrank PyTorch
Справочное руководство PyTorch torch
torch.svd_lowrankЭто функция в PyTorch для вычисления SVD-аппроксимации низкого ранга матрицы. Она использует случайные методы для вычисления частичного SVD, что быстрее, чем полное SVD.
Определение функции
torch.svd_lowrank(A, q=6, niter=2, mexp=2)
Parameters:
A(Tensor): Входная матрица.q(int, optional): Число степенных итераций. По умолчанию 6.niter(int, optional): Число случайных итераций. По умолчанию 2.mexp(int, optional): Показатель степени матрицы. По умолчанию 2.
Возвращаемое значение:
tuple: Возвращает кортеж (U, S, V).
Пример использования
Пример
import torch
# Создать большую матрицу
A = torch.randn(100, 50)
# SVD низкого ранга (вычислить 10 наибольших сингулярных значений)
U, S, V = torch.svd_lowrank(A, q=10)
print("Форма матрицы A:", A.shape)
print("Форма U:", U.shape)
print("Форма сингулярных значений S:", S.shape)
print("Форма V:", V.shape)
print("nСингулярные значения:")
print(S[:10])
# Создать большую матрицу
A = torch.randn(100, 50)
# SVD низкого ранга (вычислить 10 наибольших сингулярных значений)
U, S, V = torch.svd_lowrank(A, q=10)
print("Форма матрицы A:", A.shape)
print("Форма U:", U.shape)
print("Форма сингулярных значений S:", S.shape)
print("Форма V:", V.shape)
print("nСингулярные значения:")
print(S[:10])
Результат вывода:
矩阵 A 形状: torch.Size([100, 50])
U 形状: torch.Size([100, 10])
奇异值 S 形状: torch.Size([10])
V 形状: torch.Size([50, 10])
奇异值:
tensor([14.6526, 14.0891, 13.5830, 13.0966, 12.7677, 12.4337, 12.1510,
11.8361, 11.5309, 11.3064])
Другие расширения