Missed TensorFlow Dev Summit? Check out the video playlist. Watch recordings


TensorFlow 1 version View source on GitHub

Computes the hinge loss between y_true and y_pred.

    reduction=losses_utils.ReductionV2.AUTO, name='hinge'

loss = maximum(1 - y_true * y_pred, 0)

y_true values are expected to be -1 or 1. If binary (0 or 1) labels are provided we will convert them to -1 or 1.


h = tf.keras.losses.Hinge()
loss = h([-1., 1., 1.], [0.6, -0.7, -0.5])

# loss = max(0, 1 - y_true * y_pred) = [1.6 + 1.7 + 1.5] / 3

print('Loss: ', loss.numpy())  # Loss: 1.6

Usage with the compile API:

model = tf.keras.Model(inputs, outputs)
model.compile('sgd', loss=tf.keras.losses.Hinge())



View source

    y_true, y_pred, sample_weight=None

Invokes the Loss instance.


  • y_true: Ground truth values. shape = [batch_size, d0, .. dN]
  • y_pred: The predicted values. shape = [batch_size, d0, .. dN]
  • 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 ondN-1: all loss functions reduce by 1 dimension, usually axis=-1.)


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.)


  • ValueError: If the shape of sample_weight is invalid.


View source

    cls, config

Instantiates a Loss from its config (output of get_config()).


  • config: Output of get_config().


A Loss instance.


View source