View source on GitHub
|
Computes any arbitrary loss between the labels and the true logits tensor.
tfm.uplift.losses.true_logits_loss.TrueLogitsLoss(
loss_fn: Callable[[Any, tf.Tensor], tf.Tensor],
name: str = 'true_logits_loss',
reduction=tf_keras.losses.Reduction.AUTO,
**loss_fn_kwargs
)
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
)
)
Args | |
|---|---|
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
@classmethodfrom_config( config: MutableMapping[str, Any] ) -> TrueLogitsLoss
Instantiates a Loss from its config (output of get_config()).
| Args | |
|---|---|
config
|
Output of get_config().
|
| Returns | |
|---|---|
A keras.losses.Loss instance.
|
get_config
get_config() -> Mapping[str, Any]
Returns the config dictionary for a Loss instance.
__call__
__call__(
y_true, y_pred, sample_weight=None
)
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.
|
View source on GitHub