mindspore.ops.MultilabelMarginLoss
- class mindspore.ops.MultilabelMarginLoss(reduction='mean')[源代码]
创建一个损失函数,用于最小化多分类任务的合页损失。 它以一个2D mini-batch Tensor \(x\) 作为输入,以包含目标类索引的2D Tensor \(y\) 作为输出。
更多细节请参考
mindspore.ops.multilabel_margin_loss()
。- 参数:
reduction (str, 可选) - 可选,对输出应用特定的缩减方法:可选
'none'
、'mean'
、'sum'
。默认值:'mean'
。'none'
:不应用缩减方法。'mean'
:输出的值总和除以输出的元素个数。'sum'
:输出的总和。
- 输入:
x (Tensor) - 预测值。shape为 \((C)\) 或 \((N, C)\),其中 \(N\) 为批量大小,\(C\) 为类别数。数据类型必须为:float16或float32。
target (Tensor) - 真实标签,shape与 input 相同,数据类型必须为int32,标签目标由-1填充。
- 输出:
y (Union[Tensor, Scalar]) - MultilabelMarginLoss损失。如果 reduction 的值为 ‘none’, 那么返回shape为 \((N)\) 的Tensor类型数据。否则返回一个标量。
is_target (Tensor) - 用于反向输入的Tensor,其shape与 target 一致,数据类型为int32。
- 支持平台:
Ascend
GPU
样例:
>>> import mindspore >>> import numpy as np >>> from mindspore import Tensor, ops >>> loss = ops.MultilabelMarginLoss() >>> x = Tensor(np.array([[0.1, 0.2, 0.4, 0.8], [0.2, 0.3, 0.5, 0.7]]), mindspore.float32) >>> target = Tensor(np.array([[1, 2, 0, 3], [2, 3, -1, 1]]), mindspore.int32) >>> output = loss(x, target) >>> print(output) (Tensor(shape=[], dtype=Float32, value= 0.325), Tensor(shape=[2, 4], dtype=Int32, value= [[1, 1, 1, 1], [0, 0, 1, 1]]))