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


Python PyTorch MultiMarginLoss用法及代碼示例


本文簡要介紹python語言中 torch.nn.MultiMarginLoss 的用法。

用法:

class torch.nn.MultiMarginLoss(p=1, margin=1.0, weight=None, size_average=None, reduce=None, reduction='mean')

參數

  • p(int,可選的) -默認值為 是唯一受支持的值。

  • margin(float,可選的) -默認值為

  • weight(Tensor,可選的) -給每個類一個手動重新調整的權重。如果給定,它必須是大小為 C 的張量。否則,它被視為擁有所有的。

  • size_average(bool,可選的) -已棄用(請參閱reduction)。默認情況下,損失是批次中每個損失元素的平均值。請注意,對於某些損失,每個樣本有多個元素。如果字段 size_average 設置為 False ,則會對每個小批量的損失求和。當 reduceFalse 時忽略。默認值:True

  • reduce(bool,可選的) -已棄用(請參閱reduction)。默認情況下,根據 size_average 對每個小批量的觀察結果進行平均或求和。當 reduceFalse 時,返回每個批次元素的損失並忽略 size_average 。默認值:True

  • reduction(string,可選的) -指定要應用於輸出的縮減:'none' | 'mean' | 'sum''none' :不應用減少,'mean':輸出的總和將除以輸出中的元素數,'sum':輸出將被求和。注意:size_averagereduce 正在被棄用,同時,指定這兩個參數中的任何一個都將覆蓋 reduction 。默認值:'mean'

創建一個優化多類分類鉸鏈損失(基於邊的損失)的標準,該標準位於輸入 (2D 小批量 Tensor )和輸出 (目標的 1D 張量)之間類索引, ):

對於每個小批量樣本,一維輸入 和標量輸出 的損失為:

其中

或者,您可以通過將 1D weight 張量傳遞給構造函數來對類賦予不相等的權重。

損失函數則變為:

形狀:
  • 輸入: ,其中 是批量大小, 是類數。

  • 目標: ,其中每個值為

  • 輸出:標量。如果 reduction'none' ,則形狀與目標相同。

例子:

>>> loss = nn.MultiMarginLoss()
>>> x = torch.tensor([[0.1, 0.2, 0.4, 0.8]])
>>> y = torch.tensor([3])
>>> loss(x, y)
>>> # 0.25 * ((1-(0.8-0.1)) + (1-(0.8-0.2)) + (1-(0.8-0.4)))
tensor(0.3250)

相關用法


注:本文由純淨天空篩選整理自pytorch.org大神的英文原創作品 torch.nn.MultiMarginLoss。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。