View source on GitHub
|
Computes the binary focal crossentropy loss.
tf.keras.losses.binary_focal_crossentropy(
y_true,
y_pred,
apply_class_balancing=False,
alpha=0.25,
gamma=2.0,
from_logits=False,
label_smoothing=0.0,
axis=-1
)
According to Lin et al., 2018, it helps to apply a focal factor to down-weight easy examples and focus more on hard examples. By default, the focal tensor is computed as follows:
focal_factor = (1 - output) ** gamma for class 1
focal_factor = output ** gamma for class 0
where gamma is a focusing parameter. When gamma = 0, there is no focal
effect on the binary crossentropy loss.
If apply_class_balancing == True, this function also takes into account a
weight balancing factor for the binary classes 0 and 1 as follows:
weight = alpha for class 1 (target == 1)
weight = 1 - alpha for class 0
where alpha is a float in the range of [0, 1].
Returns | |
|---|---|
Binary focal crossentropy loss value
with shape = [batch_size, d0, .. dN-1].
|
Example:
y_true = [[0, 1], [0, 0]]y_pred = [[0.6, 0.4], [0.4, 0.6]]# In this instance, the first sample in the second batch is the# 'easier' example.focal_loss = keras.losses.binary_focal_crossentropy(y_true, y_pred, gamma=2)assert loss.shape == (2,)focal_lossarray([0.330, 0.206], dtype=float32)# Compare with binary_crossentropybce_loss = keras.losses.binary_focal_crossentropy(y_true, y_pred)bce_lossarray([0.916, 0.714], dtype=float32)# Binary focal crossentropy loss attributes more importance to the# harder example which results in a higher loss for the first batch# when normalized by binary cross entropy lossfocal_loss/bce_lossarray([0.360, 0.289]
View source on GitHub