class ClassNLLCriterion[T] extends TensorCriterion[T]
The negative log likelihood criterion. It is useful to train a classification problem with n classes. If provided, the optional argument weights should be a 1D Tensor assigning weight to each of the classes. This is particularly useful when you have an unbalanced training set.
The input given through a forward() is expected to contain log-probabilities/probabilities of each class: input has to be a 1D Tensor of size n. Obtaining log-probabilities/probabilities in a neural network is easily achieved by adding a LogSoftMax/SoftMax layer in the last layer of your neural network. You may use CrossEntropyCriterion instead, if you prefer not to add an extra layer to your network. This criterion expects a class index (1 to the number of class) as target when calling forward(input, target) and backward(input, target).
In the log-probabilities case, The loss can be described as: loss(x, class) = -x[class] or in the case of the weights argument it is specified as follows: loss(x, class) = -weights[class] * x[class]
Due to the behaviour of the backend code, it is necessary to set sizeAverage to false when calculating losses in non-batch mode.
Note that if the target is paddingValue, the training process will skip this sample.
In other words, the forward process will return zero output and the backward process
will also return zero gradInput.
By default, the losses are averaged over observations for each minibatch. However, if the field sizeAverage is set to false, the losses are instead summed for each minibatch.
In particular, when weights=None, size_average=True and logProbAsInput=False, this is same as
sparse_categorical_crossentropy loss in keras.
- T
numeric type
- Annotations
- @SerialVersionUID()
- Alphabetic
- By Inheritance
- ClassNLLCriterion
- TensorCriterion
- AbstractCriterion
- Serializable
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
-
new
ClassNLLCriterion(weights: Tensor[T] = null, sizeAverage: Boolean = true, logProbAsInput: Boolean = true, paddingValue: Int = -1)(implicit arg0: ClassTag[T], ev: TensorNumeric[T])
- weights
weights of each element of the input
- sizeAverage
size average of batch
- logProbAsInput
indicating whether to accept log-probabilities or probabilities as input. True means accepting log-probabilities as input.
- ev
numeric operator
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
backward(input: Tensor[T], target: Tensor[T]): Tensor[T]
Performs a back-propagation step through the criterion, with respect to the given input.
Performs a back-propagation step through the criterion, with respect to the given input.
- input
input data
- target
target
- returns
gradient corresponding to input data
- Definition Classes
- AbstractCriterion
-
def
canEqual(other: Any): Boolean
- Definition Classes
- AbstractCriterion
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
def
cloneCriterion(): AbstractCriterion[Tensor[T], Tensor[T], T]
Deep copy this criterion
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(other: Any): Boolean
- Definition Classes
- AbstractCriterion → AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
def
forward(input: Tensor[T], target: Tensor[T]): T
Takes an input object, and computes the corresponding loss of the criterion, compared with
target.Takes an input object, and computes the corresponding loss of the criterion, compared with
target.- input
input data
- target
target
- returns
the loss of criterion
- Definition Classes
- AbstractCriterion
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
var
gradInput: Tensor[T]
- Definition Classes
- AbstractCriterion
-
def
hashCode(): Int
- Definition Classes
- AbstractCriterion → AnyRef → Any
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
var
output: T
- Definition Classes
- AbstractCriterion
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
updateGradInput(input: Tensor[T], target: Tensor[T]): Tensor[T]
Computing the gradient of the criterion with respect to its own input.
Computing the gradient of the criterion with respect to its own input. This is returned in gradInput. Also, the gradInput state variable is updated accordingly.
- input
input data
- target
target data / labels
- returns
gradient of input
- Definition Classes
- ClassNLLCriterion → AbstractCriterion
-
def
updateOutput(input: Tensor[T], target: Tensor[T]): T
Computes the loss using input and objective function.
Computes the loss using input and objective function. This function returns the result which is stored in the output field.
- input
input of the criterion
- target
target or labels
- returns
the loss of the criterion
- Definition Classes
- ClassNLLCriterion → AbstractCriterion
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )