nll_loss

paddle.nn.functional. nll_loss ( input, label, weight=None, ignore_index=- 100, reduction='mean', name=None ) [source]

This api returns negative log likelihood. See more detail in api_nn_loss_NLLLoss .

Parameters
  • input (Tensor) – Input tensor, the shape is \([N, C]\), C is the number of classes. But in K-dimension situation, the shape is \([N, C, d_1, d_2, ..., d_K]\). The data type is float32, float64.

  • label (Tensor) – Label tensor, the shape is \([N,]\) or \([N, d_1, d_2, ..., d_K]\). The data type is int64.

  • weight (Tensor, optional) – Weight tensor, a manual rescaling weight given to each class. If given, it has to be a 1D Tensor whose size is [C, ]. Otherwise, it treated as if having all ones. the data type is float32, float64, Default is 'None'.

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

  • reduction (str, optional) – Indicate how to average the loss, the candicates are 'none' | 'mean' | 'sum'. If reduction is 'mean', the reduced mean loss is returned; if reduction is 'sum', the reduced sum loss is returned; if reduction is 'none', no reduction will be apllied. Default is 'mean'.

  • name (str, optional) – Name for the operation (optional, default is None). For more information, please refer to Name.

Returns

Tensor, the value of negative log likelihood loss.

Examples

import paddle
from paddle.nn.functional import nll_loss
log_softmax = paddle.nn.LogSoftmax(axis=1)

input = paddle.to_tensor([[0.88103855, 0.9908683 , 0.6226845 ],
          [0.53331435, 0.07999352, 0.8549948 ],
          [0.25879037, 0.39530203, 0.698465  ],
          [0.73427284, 0.63575995, 0.18827209],
          [0.05689114, 0.0862954 , 0.6325046 ]], "float32")
log_out = log_softmax(input)
label = paddle.to_tensor([0, 2, 1, 1, 0], "int64")
result = nll_loss(log_out, label)
print(result) # Tensor(shape=[1], dtype=float32, place=CPUPlace, stop_gradient=True, [1.07202101])