當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。