MarginRankingLoss

class paddle.nn.MarginRankingLoss ( margin\=0.0, reduction\=’mean’, name\=None ) [源代码]

该接口用于创建一个 MarginRankingLoss 的可调用类,计算输入input,other 和 标签label间的 margin rank loss 损失。

该损失函数的数学计算公式如下:

MarginRankingLoss - 图1

当 reduction 设置为 'mean' 时,

MarginRankingLoss - 图2

当 reduction 设置为 'sum' 时,

MarginRankingLoss - 图3

当 reduction 设置为 'none' 时,直接返回最原始的 margin_rank_loss 。

参数

  • margin (float,可选): - 用于加和的margin值,默认值为0。

  • reduction (string,可选): - 指定应用于输出结果的计算方式,可选值有: 'none''mean''sum' 。如果设置为 'none' ,则直接返回 最原始的 margin_rank_loss 。如果设置为 'sum' ,则返回 margin_rank_loss 的总和。如果设置为 'mean' ,则返回 margin_rank_loss 的平均值。默认值为 'none'

  • name (str,可选) - 操作的名称(可选,默认值为None)。更多信息请参见 Name

形状

  • input - N-D Tensor, 维度是[N,*] 其中N 是batch size,* 是任意数量的额外维度,数据类型为float32或float64。

  • other - 与 input 的形状、数据类型相同。

  • label - 与 input 的形状、数据类型相同。

  • output - 如果 reduction'sum' 或者是 'mean' ,则形状为 [1][1] ,否则shape和输入 input 保持一致 。数据类型与 inputother 相同。

返回

返回计算MarginRankingLoss的可调用对象。

代码示例

  1. import paddle
  2. input = paddle.to_tensor([[1, 2], [3, 4]], dtype='float32')
  3. other = paddle.to_tensor([[2, 1], [2, 4]], dtype='float32')
  4. label = paddle.to_tensor([[1, -1], [-1, -1]], dtype='float32')
  5. margin_rank_loss = paddle.nn.MarginRankingLoss()
  6. loss = margin_rank_loss(input, other, label)
  7. print(loss) # [0.75]