torch.linalg.inv¶
- torch.linalg.inv(A, *, out=None) Tensor ¶
计算存在的情况下方阵的逆。如果矩阵不可逆,则抛出 RuntimeError 异常。
设 为 或 ,对于一个矩阵 ,其逆矩阵 (如果存在)定义为
其中 是 n 维单位矩阵。
逆矩阵存在当且仅当 可逆。在这种情况下,逆矩阵是唯一的。
支持输入 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)