当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。