快捷键

torch.linalg.inv

torch.linalg.inv(A, *, out=None) Tensor

计算存在的情况下方阵的逆。如果矩阵不可逆,则抛出 RuntimeError 异常。

K\mathbb{K}R\mathbb{R}C\mathbb{C} ,对于一个矩阵 AKn×nA \in \mathbb{K}^{n \times n} ,其逆矩阵 A1Kn×nA^{-1} \in \mathbb{K}^{n \times n} (如果存在)定义为

A1A=AA1=InA^{-1}A = AA^{-1} = \mathrm{I}_n

其中 In\mathrm{I}_n 是 n 维单位矩阵。

逆矩阵存在当且仅当 AA 可逆。在这种情况下,逆矩阵是唯一的。

支持输入 float、double、cfloat 和 cdouble 数据类型。也支持矩阵批处理,如果 A 是矩阵批,则输出具有相同的批维度。

注意

当输入在 CUDA 设备上时,此函数将同步该设备与 CPU。有关不进行同步的此函数版本,请参阅 torch.linalg.inv_ex()

注意

如果可能,考虑使用 torch.linalg.solve() 在左侧乘以矩阵,如下所示:

linalg.solve(A, B) == linalg.inv(A) @ B  # When B is a matrix

在可能的情况下,始终建议使用 solve() ,因为它比显式计算逆矩阵更快且更数值稳定。

参见

torch.linalg.pinv() 可以计算任意形状矩阵的伪逆(摩尔-彭罗斯逆)。

torch.linalg.solve() 使用数值稳定的算法计算 A .inv() @ B

参数:

A(张量)- 形状为(*, n, n)的张量,其中*为零个或多个批维度,包含可逆矩阵。

关键字参数:

out(张量,可选)- 输出张量。如果为 None 则忽略。默认:None。

引发:

运行时错误 - 如果矩阵 A 或矩阵批次 A 中的任何矩阵不可逆。

示例:

>>> A = torch.randn(4, 4)
>>> Ainv = torch.linalg.inv(A)
>>> torch.dist(A @ Ainv, torch.eye(4))
tensor(1.1921e-07)

>>> A = torch.randn(2, 3, 4, 4)  # Batch of matrices
>>> Ainv = torch.linalg.inv(A)
>>> torch.dist(A @ Ainv, torch.eye(4))
tensor(1.9073e-06)

>>> A = torch.randn(4, 4, dtype=torch.complex128)  # Complex matrix
>>> Ainv = torch.linalg.inv(A)
>>> torch.dist(A @ Ainv, torch.eye(4))
tensor(7.5107e-16, dtype=torch.float64)

© 版权所有 PyTorch 贡献者。

使用 Sphinx 构建,并使用 Read the Docs 提供的主题。

文档

PyTorch 的全面开发者文档

查看文档

教程

深入了解初学者和高级开发者的教程

查看教程

资源

查找开发资源并获得您的疑问解答

查看资源