public abstract class Loss extends Evaluator
Although all evaluators can be used to measure the performance of a model, not all of them are suited to being used by an optimizer. Loss functions are usually non-negative where a larger loss represents worse performance. They are also real-valued to accurately compare models.
When creating a loss function, you should avoid having the loss depend on the batch size. For
example, if you have a loss per item in a batch and sum those losses, your loss would be numItemsInBatch*avgLoss. Instead, you should take the mean of those losses to reduce out the
batchSize factor. Otherwise, it can make it difficult to tune the learning rate since any change
in the batch size would throw it off. If you have a variable batch size, it would be even more
difficult.
For more details about the class internals, see Evaluator.
totalInstances| Constructor and Description |
|---|
Loss(java.lang.String name)
Base class for metric with abstract update methods.
|
| Modifier and Type | Method and Description |
|---|---|
void |
addAccumulator(java.lang.String key)
Adds an accumulator for the results of the evaluation with the given key.
|
float |
getAccumulator(java.lang.String key)
Returns the accumulated evaluator value.
|
static HingeLoss |
hingeLoss()
Returns a new instance of
HingeLoss with default arguments. |
static HingeLoss |
hingeLoss(java.lang.String name)
Returns a new instance of
HingeLoss with default arguments. |
static HingeLoss |
hingeLoss(java.lang.String name,
int margin,
float weight)
Returns a new instance of
HingeLoss with the given arguments. |
static L1Loss |
l1Loss()
Returns a new instance of
L1Loss with default weight and batch axis. |
static L1Loss |
l1Loss(java.lang.String name)
Returns a new instance of
L1Loss with default weight and batch axis. |
static L1Loss |
l1Loss(java.lang.String name,
float weight)
Returns a new instance of
L1Loss with given weight and batch axis. |
static L2Loss |
l2Loss()
Returns a new instance of
L2Loss with default weight and batch axis. |
static L2Loss |
l2Loss(java.lang.String name)
Returns a new instance of
L2Loss with default weight and batch axis. |
static L2Loss |
l2Loss(java.lang.String name,
float weight)
Returns a new instance of
L2Loss with given weight and batch axis. |
void |
resetAccumulator(java.lang.String key)
Resets the evaluator value with the given key.
|
static SigmoidBinaryCrossEntropyLoss |
sigmoidBinaryCrossEntropyLoss()
Returns a new instance of
SigmoidBinaryCrossEntropyLoss with default arguments. |
static SigmoidBinaryCrossEntropyLoss |
sigmoidBinaryCrossEntropyLoss(java.lang.String name)
Returns a new instance of
SigmoidBinaryCrossEntropyLoss with default arguments. |
static SigmoidBinaryCrossEntropyLoss |
sigmoidBinaryCrossEntropyLoss(java.lang.String name,
float weight,
boolean fromSigmoid)
Returns a new instance of
SigmoidBinaryCrossEntropyLoss with the given arguments. |
static SoftmaxCrossEntropyLoss |
softmaxCrossEntropyLoss()
Returns a new instance of
SoftmaxCrossEntropyLoss with default arguments. |
static SoftmaxCrossEntropyLoss |
softmaxCrossEntropyLoss(java.lang.String name)
Returns a new instance of
SoftmaxCrossEntropyLoss with default arguments. |
static SoftmaxCrossEntropyLoss |
softmaxCrossEntropyLoss(java.lang.String name,
float weight,
int classAxis,
boolean sparseLabel,
boolean fromLogit)
Returns a new instance of
SoftmaxCrossEntropyLoss with the given arguments. |
void |
updateAccumulator(java.lang.String key,
NDList labels,
NDList predictions)
Updates the evaluator with the given key based on a
NDList of labels and predictions. |
checkLabelShapes, checkLabelShapes, evaluate, getNamepublic Loss(java.lang.String name)
name - The display name of the Losspublic static L1Loss l1Loss()
L1Loss with default weight and batch axis.L1Losspublic static L1Loss l1Loss(java.lang.String name)
L1Loss with default weight and batch axis.name - the name of the lossL1Losspublic static L1Loss l1Loss(java.lang.String name, float weight)
L1Loss with given weight and batch axis.name - the name of the lossweight - the weight to apply on loss value, default 1L1Losspublic static L2Loss l2Loss()
L2Loss with default weight and batch axis.L2Losspublic static L2Loss l2Loss(java.lang.String name)
L2Loss with default weight and batch axis.name - the name of the lossL2Losspublic static L2Loss l2Loss(java.lang.String name, float weight)
L2Loss with given weight and batch axis.name - the name of the lossweight - the weight to apply on loss value, default 1L2Losspublic static SigmoidBinaryCrossEntropyLoss sigmoidBinaryCrossEntropyLoss()
SigmoidBinaryCrossEntropyLoss with default arguments.SigmoidBinaryCrossEntropyLosspublic static SigmoidBinaryCrossEntropyLoss sigmoidBinaryCrossEntropyLoss(java.lang.String name)
SigmoidBinaryCrossEntropyLoss with default arguments.name - the name of the lossSigmoidBinaryCrossEntropyLosspublic static SigmoidBinaryCrossEntropyLoss sigmoidBinaryCrossEntropyLoss(java.lang.String name, float weight, boolean fromSigmoid)
SigmoidBinaryCrossEntropyLoss with the given arguments.name - the name of the lossweight - the weight to apply on the loss value, default 1fromSigmoid - whether the input is from the output of sigmoid, default falseSigmoidBinaryCrossEntropyLosspublic static SoftmaxCrossEntropyLoss softmaxCrossEntropyLoss()
SoftmaxCrossEntropyLoss with default arguments.SoftmaxCrossEntropyLosspublic static SoftmaxCrossEntropyLoss softmaxCrossEntropyLoss(java.lang.String name)
SoftmaxCrossEntropyLoss with default arguments.name - the name of the lossSoftmaxCrossEntropyLosspublic static SoftmaxCrossEntropyLoss softmaxCrossEntropyLoss(java.lang.String name, float weight, int classAxis, boolean sparseLabel, boolean fromLogit)
SoftmaxCrossEntropyLoss with the given arguments.name - the name of the lossweight - the weight to apply on the loss value, default 1classAxis - the axis that represents the class probabilities, default -1sparseLabel - whether labels are integer array or probabilities, default truefromLogit - whether labels are log probabilities or un-normalized numbersSoftmaxCrossEntropyLosspublic static HingeLoss hingeLoss()
HingeLoss with default arguments.HingeLosspublic static HingeLoss hingeLoss(java.lang.String name)
HingeLoss with default arguments.name - the name of the lossHingeLosspublic static HingeLoss hingeLoss(java.lang.String name, int margin, float weight)
HingeLoss with the given arguments.name - the name of the lossmargin - the margin in hinge loss. Defaults to 1.0weight - the weight to apply on loss value, default 1HingeLosspublic void addAccumulator(java.lang.String key)
addAccumulator in class Evaluatorkey - the key for the new accumulatorpublic void updateAccumulator(java.lang.String key,
NDList labels,
NDList predictions)
NDList of labels and predictions.
This is a synchronized operation. You should only call it at the end of a batch or epoch.
updateAccumulator in class Evaluatorkey - the key of the accumulator to updatelabels - a NDList of labelspredictions - a NDList of predictionspublic void resetAccumulator(java.lang.String key)
resetAccumulator in class Evaluatorkey - the key of the accumulator to resetpublic float getAccumulator(java.lang.String key)
getAccumulator in class Evaluatorkey - the key of the accumulator to get