GaussianNLLLoss¶
- class torch.nn.GaussianNLLLoss(*, full=False, eps=1e-06, reduction='mean')[源码][源码]¶
高斯负对数似然损失。
目标被视为来自高斯分布的样本,其期望和方差由神经网络预测。对于一个被建模为具有高斯分布的
target
张量,其中期望张量为input
,正方差张量为var
,损失计算如下:其中
eps
用于稳定性。默认情况下,除非full
为True
,否则损失函数中的常数项将被忽略。如果var
的大小与input
不同(由于同方差假设),则为了正确广播,它必须要么最后一个维度为 1,要么维度比input
少一个(并且所有其他维度的大小相同)。- 参数
- 形状
输入: 或 ,其中 表示任意数量的附加维度
目标: 或 ,形状与输入相同,或者形状与输入相同但有一个维度等于 1(以允许广播)
方差: 或 ,形状与输入相同,或者形状与输入相同但有一个维度等于 1,或者形状比输入少一个维度(以允许广播),或者是一个标量值
输出:如果
reduction
为'mean'
(默认)或'sum'
,则为标量。如果reduction
为'none'
,则为 ,形状与输入相同
- 示例:
>>> loss = nn.GaussianNLLLoss() >>> input = torch.randn(5, 2, requires_grad=True) >>> target = torch.randn(5, 2) >>> var = torch.ones(5, 2, requires_grad=True) # heteroscedastic >>> output = loss(input, target, var) >>> output.backward()
>>> loss = nn.GaussianNLLLoss() >>> input = torch.randn(5, 2, requires_grad=True) >>> target = torch.randn(5, 2) >>> var = torch.ones(5, 1, requires_grad=True) # homoscedastic >>> output = loss(input, target, var) >>> output.backward()
注意
`var` 的钳制操作对于 autograd 是忽略的,因此梯度不受其影响。
- 参考
Nix, D. A. and Weigend, A. S., “Estimating the mean and variance of the target probability distribution”, Proceedings of 1994 IEEE International Conference on Neural Networks (ICNN’94), Orlando, FL, USA, 1994, pp. 55-60 vol.1, doi: 10.1109/ICNN.1994.374138.