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


Python PyTorch GaussianNLLLoss用法及代码示例


本文简要介绍python语言中 torch.nn.GaussianNLLLoss 的用法。

用法:

class torch.nn.GaussianNLLLoss(*, full=False, eps=1e-06, reduction='mean')

参数

  • full(bool,可选的) -在损失计算中包括常数项。默认值:False

  • eps(float,可选的) -用于钳位 var 的值(请参见下面的注释),以确保稳定性。默认值:1e-6。

  • reduction(string,可选的) -指定要应用于输出的缩减:'none' | 'mean' | 'sum''none' :不应用减少,'mean':输出是所有批次成员损失的平均值,'sum':输出是所有批次成员损失的总和。默认值:'mean'

高斯负对数似然损失。

目标被视为来自高斯分布的样本,具有由神经网络预测的期望和方差。对于 target 张量建模为具有期望张量 input 和正方差张量 var 的高斯分布,损失为:

其中eps 用于稳定性。默认情况下,除非 fullTrue ,否则会省略损失函数的常数项。如果 var 的大小与 input 的大小不同(由于同方差假设),则它的最终维度必须为 1 或少一个维度(所有其他大小相同)才能正确广播。

形状:
  • 输入: 其中 表示任意数量的附加维度

  • 目标: ,与输入相同的形状,或与输入相同的形状但一维等于 1(以允许广播)

  • Var: ,与输入相同的形状,或与输入相同的形状但一维等于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. 和 Weigend, A. S.,“估计目标概率分布的均值和方差”,1994 年 IEEE 神经网络国际会议 (ICNN'94) 论文集,美国佛罗里达州奥兰多市,1994 年,第 55-60 卷.1、doi:10.1109/ICNN.1994.374138。

相关用法


注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.nn.GaussianNLLLoss。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。