评价此页

torch.logdet#

torch.logdet(input) Tensor#

计算方阵或方阵批次的对数行列式。

如果输入行列式为零,则返回 -inf,如果输入行列式为负,则返回 NaN

注意

input 不可逆时,logdet() 的反向传播内部使用 SVD 结果。在这种情况下,当 input 没有不同的奇异值时,logdet() 的二次反向传播将不稳定。有关详细信息,请参阅 torch.linalg.svd()

另请参阅

torch.linalg.slogdet() 计算实值(或复数)方阵的行列式的符号(分别称为“符号”)和绝对值的自然对数。

参数

input (Tensor) – 大小为 (*, n, n) 的输入张量,其中 * 表示零个或多个批次维度。

示例

>>> A = torch.randn(3, 3)
>>> torch.det(A)
tensor(0.2611)
>>> torch.logdet(A)
tensor(-1.3430)
>>> A
tensor([[[ 0.9254, -0.6213],
         [-0.5787,  1.6843]],

        [[ 0.3242, -0.9665],
         [ 0.4539, -0.0887]],

        [[ 1.1336, -0.4025],
         [-0.7089,  0.9032]]])
>>> A.det()
tensor([1.1990, 0.4099, 0.7386])
>>> A.det().log()
tensor([ 0.1815, -0.8917, -0.3031])