View source on GitHub |
Computes the binary focal crossentropy loss.
tf.keras.metrics.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]
.
Standalone usage:
y_true = [[0, 1], [0, 0]]
y_pred = [[0.6, 0.4], [0.4, 0.6]]
loss = tf.keras.losses.binary_focal_crossentropy(y_true, y_pred,
gamma=2)
assert loss.shape == (2,)
loss.numpy()
array([0.330, 0.206], dtype=float32)
Returns | |
---|---|
Binary focal crossentropy loss value. shape = [batch_size, d0, .. dN-1] .
|