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


Python PyTorch TripletMarginLoss用法及代碼示例


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

用法:

class torch.nn.TripletMarginLoss(margin=1.0, p=2.0, eps=1e-06, swap=False, size_average=None, reduce=None, reduction='mean')

參數

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

  • p(int,可選的) -成對距離的範數。默認值:

  • swap(bool,可選的) -V. Balntas、E. Riba 等人在論文Learning shallow convolutional feature descriptors with triplet losses 中詳細說明了距離交換。默認值:False

  • 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'

在給定輸入張量 和大於 的邊距的情況下,創建一個衡量三元組損失的標準。這用於測量樣本之間的相對相似性。三元組由apn(即分別為anchorpositive examplesnegative examples)組成。所有輸入張量的形狀應該是

距離交換在論文中有詳細說明學習具有三重損失的淺卷積特征說明符由 V. Balntas、E. Riba 等人撰寫。

小批量中每個樣本的損失函數為:

其中

另請參見 TripletMarginWithDistanceLoss ,它使用自定義距離函數計算輸入張量的三元組邊距損失。

形狀:
  • 輸入: (D) 其中 是向量維度。

  • 輸出:形狀為 的張量,如果 reduction'none' 並且

    輸入形狀為 (N, D) ;否則為標量。

例子:

>>> triplet_loss = nn.TripletMarginLoss(margin=1.0, p=2)
>>> anchor = torch.randn(100, 128, requires_grad=True)
>>> positive = torch.randn(100, 128, requires_grad=True)
>>> negative = torch.randn(100, 128, requires_grad=True)
>>> output = triplet_loss(anchor, positive, negative)
>>> output.backward()

相關用法


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