mindspore.ops.multilabel_margin_loss
- mindspore.ops.multilabel_margin_loss(input, target, reduction='mean')[source]
Hinge loss for optimizing a multi-label classification.
Creates a criterion that optimizes a multi-label multi-classification hinge loss (margin-based loss) between input
(a 2D mini-batch Tensor) and output (which is a 2D Tensor of target class indices). For each sample in the mini-batch:where
, , , and for all and . and must have the same size. The criterion only considers a contiguous block of non-negative targets that starts at the front. This allows for different samples to have variable amounts of target classes.- Parameters
input (Tensor) – Predict data. Tensor of shape
or , where is the batch size and is the number of classes. Data type must be float16 or float32.target (Tensor) – Ground truth data, with the same shape as input, data type must be int32 and label targets padded by -1.
reduction (str, optional) –
Apply specific reduction method to the output: ‘none’, ‘mean’, ‘sum’. Default: ‘mean’.
’none’: no reduction will be applied.
’mean’: the sum of the output will be divided by the number of elements in the output.
’sum’: the output will be summed.
- Returns
outputs (Union[Tensor, Scalar]) - The loss of MultilabelMarginLoss. If reduction is “none”, its shape is
. Otherwise, a scalar value will be returned.
- Raises
TypeError – If input or target is not a Tensor.
TypeError – If dtype of input is neither float16 nor float32.
TypeError – If dtype of target is not int32.
ValueError – If length of shape of input is neither 1 nor 2.
ValueError – If shape of input is not the same as target.
ValueError – If reduction is not one of ‘none’, ‘mean’, ‘sum’.
- Supported Platforms:
Ascend
GPU
Examples
>>> inputs = 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 = ops.multilabel_margin_loss(inputs, target) >>> print(output) 0.325