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]]))