mindspore.ops.margin_ranking_loss
- mindspore.ops.margin_ranking_loss(input1, input2, target, margin=0.0, reduction='mean')[源代码]
排序损失函数,用于创建一个衡量给定损失的标准。
给定两个Tensor \(input1\) 和 \(input2\) ,以及一个Tensor标签 \(target\) ,值为1或-1,公式如下:
\[\text{loss}(input1, input2, target) = \max(0, -target * (input1 - input2) + \text{margin})\]- 参数:
input1 (Tensor) - 输入Tensor,shape \((N, *)\) ,其中 \(*\) 代表任意数量的附加维度。
input2 (Tensor) - 输入Tensor,shape \((N, *)\) 。shape和数据类型与 input1 相同。
target (Tensor) - 输入值为1或-1。假设 input1 的shape是 \((x_1, x_2, x_3, ..., x_R)\) ,那么 target 的shape必须是 \((x_1, x_2, x_3, ..., x_R)\) 。
margin (float, 可选) - 指定运算的调节因子。默认值:
0.0
。reduction (str,可选) - 指定应用于输出结果的规约计算方式,可选
"none"
、"mean"
、"sum"
,默认值:"mean"
。"none"
:不应用规约方法。"mean"
:计算输出元素的平均值。"sum"
:计算输出元素的总和。
- 返回:
Tensor或Scalar,如果 reduction 为"none",其shape与 input1 相同。否则,将返回为Scalar。
- 异常:
TypeError - margin 不是float。
TypeError - input1 ,input2 和 target 不是Tensor。
TypeError - input1 和 input2 类型不一致。
TypeError - input1 和 target 类型不一致。
ValueError - input1 和 input2 shape不一致。
ValueError - input1 和 target shape不一致。
ValueError - reduction 不为
"none"
、"mean"
或"sum"
。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import mindspore as ms >>> from mindspore import Tensor, ops >>> import numpy as np >>> input1 = Tensor(np.array([0.3864, -2.4093, -1.4076]), ms.float32) >>> input2 = Tensor(np.array([-0.6012, -1.6681, 1.2928]), ms.float32) >>> target = ops.Sign()(Tensor(np.array([-2, -2, 3]), ms.float32)) >>> output = ops.margin_ranking_loss(input1, input2, target) >>> print(output) 1.2293333