mindspore.ops.nll_loss

mindspore.ops.nll_loss(inputs, target, weight=None, ignore_index=- 100, reduction='mean', label_smoothing=0.0)[source]

Gets the negative log likelihood loss between inputs and target.

The nll loss with reduction=none can be described as:

\[\ell(x, t)=L=\left\{l_{1}, \ldots, l_{N}\right\}^{\top}, \quad l_{n}=-w_{t_{n}} x_{n, t_{n}}, \quad w_{c}=\text { weight }[c] \cdot \mathbb{1} \{c \not= \text{ignore_index}\},\]

where \(x\) is the inputs, \(t\) is the target, \(w\) is the weight, N is the batch size, \(c\) belonging to [0, C-1] is class index, where \(C\) is the number of classes.

If reduction is not ‘none’ (default ‘mean’), then

\[\begin{split}\ell(x, t)=\left\{\begin{array}{ll} \sum_{n=1}^{N} \frac{1}{\sum_{n=1}^{N} w_{t n}} l_{n}, & \text { if reduction }=\text { 'mean', } \\ \sum_{n=1}^{N} l_{n}, & \text { if reduction }=\text { 'sum' } \end{array}\right.\end{split}\]
Parameters
  • inputs (Tensor) – \((N, C)\) where C = number of classes or \((N, C, H, W)\) in case of 2D Loss, or \((N, C, d_1, d_2, ..., d_K)\). inputs is expected to be log-probabilities, data type must be float16 or float32.

  • target (Tensor) – \((N)\) or \((N, d_1, d_2, ..., d_K)\) for high-dimensional loss, data type must be int32.

  • weight (Tensor) – A rescaling weight applied to the loss of each batch element. If not None, the shape is \((C,)\). The data type must be float16 or float32. Default: None.

  • ignore_index (int) – Specifies a target value that is ignored and does not contribute to the input gradient. Default: -100

  • reduction (str) – Apply specific reduction method to the output: ‘none’, ‘mean’, or ‘sum’. Default: ‘mean’.

  • label_smoothing (float) – Label smoothing values, a regularization tool used to prevent the model from overfitting when calculating Loss. The value range is [0.0, 1.0]. Default value: 0.0.

Returns

Tensor, the computed loss value.

Supported Platforms:

Ascend GPU CPU

Examples

>>> inputs = mindspore.Tensor(np.random.randn(3, 5), mindspore.float32)
>>> target = mindspore.Tensor(np.array([1, 0, 4]), mindspore.int32)
>>> output = ops.nll_loss(inputs, target)