Type Loss
Namespace tensorflow.keras.losses
Parent PythonObjectContainer
Interfaces ILoss
Loss base class. To be implemented by subclasses:
* `call()`: Contains the logic for loss calculation using `y_true`, `y_pred`. Example subclass implementation:
```
class MeanSquaredError(Loss):
def call(self, y_true, y_pred):
y_pred = ops.convert_to_tensor(y_pred)
y_true = math_ops.cast(y_true, y_pred.dtype)
return K.mean(math_ops.square(y_pred - y_true), axis=-1)
``` When used with
tf.distribute.Strategy
, outside of built-in training loops
such as tf.keras
`compile` and `fit`, please use 'SUM' or 'NONE' reduction
types, and reduce losses explicitly in your training loop. Using 'AUTO' or
'SUM_OVER_BATCH_SIZE' will raise an error. Please see
https://www.tensorflow.org/alpha/tutorials/distribute/training_loops for more
details on this. You can implement 'SUM_OVER_BATCH_SIZE' using global batch size like:
```
with strategy.scope():
loss_obj = tf.keras.losses.CategoricalCrossentropy(
reduction=tf.keras.losses.Reduction.NONE)
....
loss = (tf.reduce_sum(loss_obj(labels, predictions)) *
(1. / global_batch_size))
```
Methods
- __call__
- __call__
- __call__
- __call__
- __call__
- __call__
- __call__
- __call__
- __call__
- __call__
- __call__
- __call__
- __call__
- __call__
- __call__
- __call__
- __call__
- __call__
Properties
Public instance methods
object __call__(ndarray y_true, ndarray y_pred, double sample_weight)
Invokes the `Loss` instance.
Parameters
-
ndarray
y_true - Ground truth values. shape = `[batch_size, d0,.. dN]`
-
ndarray
y_pred - The predicted values. shape = `[batch_size, d0,.. dN]`
-
double
sample_weight - Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0,.. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns
-
object
- Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0,.. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)
object __call__(IGraphNodeBase y_true, IGraphNodeBase y_pred, double sample_weight)
Invokes the `Loss` instance.
Parameters
-
IGraphNodeBase
y_true - Ground truth values. shape = `[batch_size, d0,.. dN]`
-
IGraphNodeBase
y_pred - The predicted values. shape = `[batch_size, d0,.. dN]`
-
double
sample_weight - Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0,.. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns
-
object
- Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0,.. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)
object __call__(IGraphNodeBase y_true, IEnumerable<IGraphNodeBase> y_pred, IGraphNodeBase sample_weight)
Invokes the `Loss` instance.
Parameters
-
IGraphNodeBase
y_true - Ground truth values. shape = `[batch_size, d0,.. dN]`
-
IEnumerable<IGraphNodeBase>
y_pred - The predicted values. shape = `[batch_size, d0,.. dN]`
-
IGraphNodeBase
sample_weight - Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0,.. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns
-
object
- Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0,.. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)
object __call__(IGraphNodeBase y_true, IEnumerable<IGraphNodeBase> y_pred, int sample_weight)
Invokes the `Loss` instance.
Parameters
-
IGraphNodeBase
y_true - Ground truth values. shape = `[batch_size, d0,.. dN]`
-
IEnumerable<IGraphNodeBase>
y_pred - The predicted values. shape = `[batch_size, d0,.. dN]`
-
int
sample_weight - Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0,.. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns
-
object
- Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0,.. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)
object __call__(IGraphNodeBase y_true, IEnumerable<IGraphNodeBase> y_pred, double sample_weight)
Invokes the `Loss` instance.
Parameters
-
IGraphNodeBase
y_true - Ground truth values. shape = `[batch_size, d0,.. dN]`
-
IEnumerable<IGraphNodeBase>
y_pred - The predicted values. shape = `[batch_size, d0,.. dN]`
-
double
sample_weight - Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0,.. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns
-
object
- Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0,.. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)
object __call__(IGraphNodeBase y_true, ndarray y_pred, IGraphNodeBase sample_weight)
Invokes the `Loss` instance.
Parameters
-
IGraphNodeBase
y_true - Ground truth values. shape = `[batch_size, d0,.. dN]`
-
ndarray
y_pred - The predicted values. shape = `[batch_size, d0,.. dN]`
-
IGraphNodeBase
sample_weight - Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0,.. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns
-
object
- Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0,.. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)
object __call__(IGraphNodeBase y_true, ndarray y_pred, int sample_weight)
Invokes the `Loss` instance.
Parameters
-
IGraphNodeBase
y_true - Ground truth values. shape = `[batch_size, d0,.. dN]`
-
ndarray
y_pred - The predicted values. shape = `[batch_size, d0,.. dN]`
-
int
sample_weight - Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0,.. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns
-
object
- Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0,.. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)
object __call__(IGraphNodeBase y_true, ndarray y_pred, double sample_weight)
Invokes the `Loss` instance.
Parameters
-
IGraphNodeBase
y_true - Ground truth values. shape = `[batch_size, d0,.. dN]`
-
ndarray
y_pred - The predicted values. shape = `[batch_size, d0,.. dN]`
-
double
sample_weight - Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0,.. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns
-
object
- Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0,.. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)
object __call__(ndarray y_true, IGraphNodeBase y_pred, IGraphNodeBase sample_weight)
Invokes the `Loss` instance.
Parameters
-
ndarray
y_true - Ground truth values. shape = `[batch_size, d0,.. dN]`
-
IGraphNodeBase
y_pred - The predicted values. shape = `[batch_size, d0,.. dN]`
-
IGraphNodeBase
sample_weight - Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0,.. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns
-
object
- Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0,.. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)
object __call__(ndarray y_true, IGraphNodeBase y_pred, int sample_weight)
Invokes the `Loss` instance.
Parameters
-
ndarray
y_true - Ground truth values. shape = `[batch_size, d0,.. dN]`
-
IGraphNodeBase
y_pred - The predicted values. shape = `[batch_size, d0,.. dN]`
-
int
sample_weight - Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0,.. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns
-
object
- Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0,.. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)
object __call__(ndarray y_true, IGraphNodeBase y_pred, double sample_weight)
Invokes the `Loss` instance.
Parameters
-
ndarray
y_true - Ground truth values. shape = `[batch_size, d0,.. dN]`
-
IGraphNodeBase
y_pred - The predicted values. shape = `[batch_size, d0,.. dN]`
-
double
sample_weight - Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0,.. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns
-
object
- Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0,.. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)
object __call__(ndarray y_true, IEnumerable<IGraphNodeBase> y_pred, IGraphNodeBase sample_weight)
Invokes the `Loss` instance.
Parameters
-
ndarray
y_true - Ground truth values. shape = `[batch_size, d0,.. dN]`
-
IEnumerable<IGraphNodeBase>
y_pred - The predicted values. shape = `[batch_size, d0,.. dN]`
-
IGraphNodeBase
sample_weight - Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0,.. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns
-
object
- Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0,.. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)
object __call__(ndarray y_true, IEnumerable<IGraphNodeBase> y_pred, int sample_weight)
Invokes the `Loss` instance.
Parameters
-
ndarray
y_true - Ground truth values. shape = `[batch_size, d0,.. dN]`
-
IEnumerable<IGraphNodeBase>
y_pred - The predicted values. shape = `[batch_size, d0,.. dN]`
-
int
sample_weight - Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0,.. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns
-
object
- Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0,.. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)
object __call__(ndarray y_true, IEnumerable<IGraphNodeBase> y_pred, double sample_weight)
Invokes the `Loss` instance.
Parameters
-
ndarray
y_true - Ground truth values. shape = `[batch_size, d0,.. dN]`
-
IEnumerable<IGraphNodeBase>
y_pred - The predicted values. shape = `[batch_size, d0,.. dN]`
-
double
sample_weight - Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0,.. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns
-
object
- Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0,.. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)
object __call__(ndarray y_true, ndarray y_pred, IGraphNodeBase sample_weight)
Invokes the `Loss` instance.
Parameters
-
ndarray
y_true - Ground truth values. shape = `[batch_size, d0,.. dN]`
-
ndarray
y_pred - The predicted values. shape = `[batch_size, d0,.. dN]`
-
IGraphNodeBase
sample_weight - Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0,.. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns
-
object
- Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0,.. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)
object __call__(ndarray y_true, ndarray y_pred, int sample_weight)
Invokes the `Loss` instance.
Parameters
-
ndarray
y_true - Ground truth values. shape = `[batch_size, d0,.. dN]`
-
ndarray
y_pred - The predicted values. shape = `[batch_size, d0,.. dN]`
-
int
sample_weight - Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0,.. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns
-
object
- Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0,.. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)
object __call__(IGraphNodeBase y_true, IGraphNodeBase y_pred, int sample_weight)
Invokes the `Loss` instance.
Parameters
-
IGraphNodeBase
y_true - Ground truth values. shape = `[batch_size, d0,.. dN]`
-
IGraphNodeBase
y_pred - The predicted values. shape = `[batch_size, d0,.. dN]`
-
int
sample_weight - Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0,.. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns
-
object
- Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0,.. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)
object __call__(IGraphNodeBase y_true, IGraphNodeBase y_pred, IGraphNodeBase sample_weight)
Invokes the `Loss` instance.
Parameters
-
IGraphNodeBase
y_true - Ground truth values. shape = `[batch_size, d0,.. dN]`
-
IGraphNodeBase
y_pred - The predicted values. shape = `[batch_size, d0,.. dN]`
-
IGraphNodeBase
sample_weight - Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0,.. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)
Returns
-
object
- Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0,.. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)