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