现在位置: 首页 > PyTorch 教程 > 正文

PyTorch torch.linalg.svd 函数


Pytorch torch 参考手册 Pytorch torch 参考手册

torch.linalg.svd 是 PyTorch 线性代数模块中用于计算矩阵奇异值分解(SVD)的函数。SVD 将矩阵分解为 A = U * diag(S) * V^T。

函数定义

torch.linalg.svd(A, full_matrices=False, out=None)

参数:

  • A (Tensor): 输入矩阵。
  • full_matrices (bool, 可选): 如果为 True,返回完整的 U 和 V 矩阵。默认为 False。
  • out (tuple, 可选): 输出元组。

返回值:

  • 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:
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]])

Pytorch torch 参考手册 Pytorch torch 参考手册