tfm.uplift.losses.true_logits_loss.TrueLogitsLoss

Computes any arbitrary loss between the labels and the true logits tensor.

Note that the prediction tensor is expected to be of a tensor of type TwoTowerTrainingOutputs.

Example standalone usage:

y_true = tf.ones((3, 1))
y_pred = types.TwoTowerTrainingOutputs(
    control_logits=tf.constant([[0], [1], [0]]),
    treatment_logits=tf.constant([[1], [0], [1]]),
    true_logits=tf.ones((3, 1)),
    is_treatment=tf.constant([[True], [False], [True]])
)
loss = TrueLogitsLoss(
    loss_fn=tf_keras.losses.mean_squared_error,
    name="mean_squared_error",
    reduction=tf_keras.losses.Reduction.SUM,
)
loss(y_true, y_pred)
0.0

Example usage with the compile() API:

model.compile(
    optimizer='sgd'.
    loss=TrueLogitsLoss(
        loss_fn=tf_keras.losses.categorical_crossentropy,
        name="categorical_crossentropy",
        from_logits=True
    )
)

loss_fn The loss function to apply between the labels and true logits tensor, with signature loss_fn(y_true, y_pred, **loss_fn_kwargs).
name Optional name for the instance.
reduction Type of tf_keras.losses.Reduction to apply to loss. Default value is AUTO. AUTO indicates that the reduction option will be determined by the usage context. For almost all cases this defaults to SUM_OVER_BATCH_SIZE. When used under a tf.distribute.Strategy, except via Model.compile() and Model.fit(), using AUTO or SUM_OVER_BATCH_SIZE will raise an error.
**loss_fn_kwargs The keyword arguments that are passed on to loss_fn.

Methods

from_config

View source

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

Args
config Output of get_config().

Returns
A keras.losses.Loss instance.

get_config

View source

Returns the config dictionary for a Loss instance.

__call__

Invokes the Loss instance.

Args
y_true Ground truth values. shape = [batch_size, d0, .. dN], except sparse loss functions such as sparse categorical crossentropy where shape = [batch_size, d0, .. dN-1]
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.)

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

Raises
ValueError If the shape of sample_weight is invalid.