mindspore.ops.MultiMarginLoss

class mindspore.ops.MultiMarginLoss(p=1, margin=1.0, reduction='mean')[source]

Creates a loss function that minimizes the hinge loss for multi-class classification tasks. The loss is calculated by comparing the input and output of the function.

Warning

This is an experimental API that is subject to change or deletion.

Refer to mindspore.ops.multi_margin_loss() for more details.

Parameters
  • p (int, optional) – The norm degree for pairwise distance. Should be 1 or 2. Default: 1 .

  • margin (int, optional) – A parameter to change pairwise distance. Default: 1.0 .

  • reduction (str, optional) –

    Apply specific reduction method to the output: 'none' , 'mean' , 'sum' . Default: 'mean' .

    • 'none': no reduction will be applied.

    • 'mean': compute and return the weighted mean of elements in the output.

    • 'sum': the output elements will be summed.

Inputs:
  • inputs (Tensor) - Input , with shape \((N, C)\). Data type only support float32, float16 or float64.

  • target (Tensor) - Ground truth labels, with shape \((N,)\). Data type only support int64. The value of target should be non-negative, less than C.

  • weight (Tensor, optional) - The rescaling weight to each class with shape \((C,)\). Data type only support float16, float32 or float64.

Outputs:

Tensor, When reduction is 'none', the shape is \((N,)\). Otherwise, it is a scalar. Has the same data type with inputs.

Supported Platforms:

Ascend GPU CPU

Examples

>>> import mindspore
>>> import numpy as np
>>> from mindspore import Tensor, ops
>>> x = Tensor(np.ones(shape=[3, 3]), mindspore.float32)
>>> target = Tensor(np.array([1, 2, 1]), mindspore.int64)
>>> weight = Tensor(np.array([1, 1, 1]), mindspore.float32)
>>> loss = ops.MultiMarginLoss()
>>> output = loss(x, target, weight)
>>> print(output)
0.6666667