mindspore.ops.margin_ranking_loss
- mindspore.ops.margin_ranking_loss(input1, input2, target, margin=0.0, reduction='mean')[源代码]
排序损失函数,用于创建一个衡量给定损失的标准。
给定两个Tensor
和 ,以及一个Tensor标签 ,值为1或-1,公式如下:- 参数:
input1 (Tensor) - 输入Tensor,shape
,其中 代表任意数量的附加维度。input2 (Tensor) - 输入Tensor,shape
。shape和数据类型与 input1 相同。target (Tensor) - 输入值为1或-1。假设 input1 的shape是
,那么 target 的shape必须是 。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