mindspore.nn.CrossEntropyLoss
- class mindspore.nn.CrossEntropyLoss(weight=None, ignore_index=- 100, reduction='mean', label_smoothing=0.0)[source]
The cross entropy loss between input and target.
The CrossEntropyLoss support two kind of targets:
Class indices (int) in the range
where is the number of classes, when reduction isnone
, the loss can be described as:where
is the inputs, is the target, is the weight, N is the batch size, belonging to [0, C-1] is class index, where is the number of classes.If reduction is not
'none'
(default 'mean'), thenProbabilities (float) for each class, useful when labels beyond a single class per minibatch item are required, the loss with reduction=none can be described as:
where
is the inputs, is the target, is the weight, N is the batch size, belonging to [0, C-1] is class index, where is the number of classes.If reduction is not
'none'
(default 'mean'), then
- Parameters
weight (Tensor) – The rescaling weight to each class. If the value is not None, the shape is
. The data type only supports float32 or float16. Default:None
.ignore_index (int) – Specifies a target value that is ignored (typically for padding value) and does not contribute to the gradient. Default:
-100
.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.
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
.
- Inputs:
logits (Tensor) - Tensor of shape
or , where C = number of classes. Data type must be float16 or float32.labels (Tensor) - For class indices, tensor of shape
, or , data type must be int32. For probabilities, tensor of shape or , data type must be float16 or float32.
- Returns
Tensor, the computed cross entropy loss value.
- Raises
TypeError – If weight is not a Tensor.
TypeError – If ignore_index is not an int.
TypeError – If the data type of weight is not float16 or float32.
ValueError – If reduction is not one of
'none'
,'mean'
,'sum'
.TypeError – If label_smoothing is not a float.
TypeError – If logits is not a Tensor.
TypeError – If labels is not a Tensor.
- Supported Platforms:
Ascend
GPU
CPU
Examples
>>> import mindspore as ms >>> import mindspore.nn as nn >>> import numpy as np >>> # Case 1: Indices labels >>> inputs = ms.Tensor(np.random.randn(3, 5), ms.float32) >>> target = ms.Tensor(np.array([1, 0, 4]), ms.int32) >>> loss = nn.CrossEntropyLoss() >>> output = loss(inputs, target) >>> # Case 2: Probability labels >>> inputs = ms.Tensor(np.random.randn(3, 5), ms.float32) >>> target = ms.Tensor(np.random.randn(3, 5), ms.float32) >>> loss = nn.CrossEntropyLoss() >>> output = loss(inputs, target)