捷徑

MarginRankingLoss

class torch.nn.MarginRankingLoss(margin=0.0, size_average=None, reduce=None, reduction='mean')[source][source]

建立一個標準,用於衡量給定輸入 x1x1x2x2,兩個 1D mini-batch 或 0D Tensors,以及一個標籤 1D mini-batch 或 0D Tensor yy(包含 1 或 -1)的損失。

如果 y=1y = 1,則假設第一個輸入的排名應高於(具有較大的值)第二個輸入;反之,如果 y=1y = -1

mini-batch 中每對樣本的損失函數為

loss(x1,x2,y)=max(0,y(x1x2)+margin)\text{loss}(x1, x2, y) = \max(0, -y * (x1 - x2) + \text{margin})
參數
  • margin (float, optional) – 預設值為 00

  • size_average (bool, optional) – 已棄用 (請參閱 reduction)。 依預設,損失會針對 batch 中的每個損失元素進行平均。 請注意,對於某些損失,每個樣本有多個元素。 如果將欄位 size_average 設為 False,則損失會針對每個 minibatch 進行加總。 當 reduceFalse 時會忽略。 預設值:True

  • reduce (bool, optional) – 已棄用 (請參閱 reduction)。 依預設,損失會根據 size_average,針對每個 minibatch 的觀測值進行平均或加總。 當 reduceFalse 時,會改為傳回每個 batch 元素的損失,並忽略 size_average。 預設值:True

  • reduction (str, optional) – 指定要套用至輸出的縮減方式:'none' | 'mean' | 'sum''none':不會套用任何縮減方式,'mean':輸出總和會除以輸出中的元素數量,'sum':輸出會加總。 注意:size_averagereduce 正在逐步淘汰中,在這段期間,指定這兩個引數的任一個都會覆寫 reduction。 預設值:'mean'

形狀
  • Input1: (N)(N)()(),其中 N 是 batch 大小。

  • Input2: (N)(N)()(),與 Input1 具有相同的形狀。

  • Target: (N)(N)()(),與輸入具有相同的形狀。

  • Output: 純量。如果 reduction'none' 且 Input 的大小不是 ()(),則為 (N)(N)

範例

>>> loss = nn.MarginRankingLoss()
>>> input1 = torch.randn(3, requires_grad=True)
>>> input2 = torch.randn(3, requires_grad=True)
>>> target = torch.randn(3).sign()
>>> output = loss(input1, input2, target)
>>> output.backward()

文件

取得 PyTorch 的完整開發者文件

檢視文件

教學

取得初學者和進階開發者的深入教學

檢視教學

資源

尋找開發資源並獲得問題解答

檢視資源