CrossEntropyLoss
-
class torch.nn.CrossEntropyLoss(weight=None, size_average=None, ignore_index=-100, reduce=None, reduction='mean')[source] -
This criterion combines
LogSoftmaxandNLLLossin one single class.It is useful when training a classification problem with
Cclasses. If provided, the optional argumentweightshould be a 1DTensorassigning weight to each of the classes. This is particularly useful when you have an unbalanced training set.The
inputis expected to contain raw, unnormalized scores for each class.inputhas to be a Tensor of size either or with for theK-dimensional case (described later).This criterion expects a class index in the range as the
targetfor each value of a 1D tensor of sizeminibatch; ifignore_indexis specified, this criterion also accepts this class index (this index may not necessarily be in the class range).The loss can be described as:
or in the case of the
weightargument being specified:The losses are averaged across observations for each minibatch. If the
weightargument is specified then this is a weighted average:Can also be used for higher dimension inputs, such as 2D images, by providing an input of size with , where is the number of dimensions, and a target of appropriate shape (see below).
- Parameters
-
-
weight (Tensor, optional) – a manual rescaling weight given to each class. If given, has to be a Tensor of size
C -
size_average (bool, optional) – Deprecated (see
reduction). By default, the losses are averaged over each loss element in the batch. Note that for some losses, there are multiple elements per sample. If the fieldsize_averageis set toFalse, the losses are instead summed for each minibatch. Ignored whenreduceisFalse. Default:True -
ignore_index (int, optional) – Specifies a target value that is ignored and does not contribute to the input gradient. When
size_averageisTrue, the loss is averaged over non-ignored targets. -
reduce (bool, optional) – Deprecated (see
reduction). By default, the losses are averaged or summed over observations for each minibatch depending onsize_average. WhenreduceisFalse, returns a loss per batch element instead and ignoressize_average. Default:True -
reduction (string, optional) – Specifies the reduction to apply to the output:
'none'|'mean'|'sum'.'none': no reduction will be applied,'mean': the weighted mean of the output is taken,'sum': the output will be summed. Note:size_averageandreduceare in the process of being deprecated, and in the meantime, specifying either of those two args will overridereduction. Default:'mean'
-
weight (Tensor, optional) – a manual rescaling weight given to each class. If given, has to be a Tensor of size
- Shape:
-
- Input: where
C = number of classes, or with in the case ofK-dimensional loss. - Target: where each value is , or with in the case of K-dimensional loss.
- Output: scalar. If
reductionis'none', then the same size as the target: , or with in the case of K-dimensional loss.
- Input: where
Examples:
>>> loss = nn.CrossEntropyLoss() >>> input = torch.randn(3, 5, requires_grad=True) >>> target = torch.empty(3, dtype=torch.long).random_(5) >>> output = loss(input, target) >>> output.backward()
© 2019 Torch Contributors
Licensed under the 3-clause BSD License.
https://pytorch.org/docs/1.8.0/generated/torch.nn.CrossEntropyLoss.html