當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python PyTorch eig用法及代碼示例


本文簡要介紹python語言中 torch.eig 的用法。

用法:

torch.eig(input, eigenvectors=False, *, out=None)

參數

  • input(Tensor) -形狀為 的方陣,將為其計算特征值和特征向量

  • eigenvectors(bool) -True 計算特征值和特征向量;否則,將僅計算特征值

關鍵字參數

out(tuple,可選的) -輸出張量

返回

一個命名元組(特征值,特征向量)包含

  • 特征值(Tensor): 形狀(n \times 2) .每行是一個特征值input,其中第一個元素是實部,第二個元素是虛部。特征值不一定是有序的。

  • 特征向量(Tensor): 如果eigenvectors=False,它是一個空張量。否則,這個形狀的張量(n \times n) 可用於計算相應特征值的歸一化(單位長度)特征向量,如下所示。如果對應eigenvalues[j]是一個實數,列eigenvectors[:, j]是對應的特征向量eigenvalues[j].如果對應eigenvalues[j]eigenvalues[j + 1]形成一個複共軛對,那麽真正的特征向量可以計算為\text{true eigenvector}[j] = eigenvectors[:, j] + i \times eigenvectors[:, j + 1] ,\text{true eigenvector}[j + 1] = eigenvectors[:, j] - i \times eigenvectors[:, j + 1] .

返回類型

(TensorTensor)

計算實方陣的特征值和特征向量。

注意

由於特征值和特征向量可能很複雜,因此僅當特征值和特征向量都是實值時才支持反向傳遞。

input 在 CUDA 上時,torch.eig() 會導致 host-device 同步。

警告

torch.eig() 已棄用,取而代之的是 torch.linalg.eig() ,並將在未來的 PyTorch 版本中刪除。 torch.linalg.eig() 返回 dtype cfloatcdouble 的複張量,而不是模仿複張量的真實張量。

L, _ = torch.eig(A) 應替換為

L_complex = torch.linalg.eigvals(A)

L, V = torch.eig(A, eigenvectors=True) 應替換為

L_complex, V_complex = torch.linalg.eig(A)

例子:

Trivial example with a diagonal matrix. By default, only eigenvalues are computed:

>>> a = torch.diag(torch.tensor([1, 2, 3], dtype=torch.double))
>>> e, v = torch.eig(a)
>>> e
tensor([[1., 0.],
        [2., 0.],
        [3., 0.]], dtype=torch.float64)
>>> v
tensor([], dtype=torch.float64)

Compute also the eigenvectors:

>>> e, v = torch.eig(a, eigenvectors=True)
>>> e
tensor([[1., 0.],
        [2., 0.],
        [3., 0.]], dtype=torch.float64)
>>> v
tensor([[1., 0., 0.],
        [0., 1., 0.],
        [0., 0., 1.]], dtype=torch.float64)

相關用法


注:本文由純淨天空篩選整理自pytorch.org大神的英文原創作品 torch.eig。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。