tf.keras.losses.binary_focal_crossentropy
Вычисляет потерю бинарной фокальной перекрёстной энтропии.
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
)
Согласно Lin et al., 2018, это помогает применять фокальный фактор для уменьшения значимости лёгких примеров и фокусировки на сложных. По умолчанию, тензор фокуса вычисляется следующим образом:
focal_factor = (1 - output) ** gamma для класса 1 focal_factor = output ** gamma для класса 0, где gamma — параметр фокусировки. Когда gamma = 0, нет фокального эффекта на потери бинарной перекрёстной энтропии.
Если apply_class_balancing == True, эта функция также учитывает фактор балансировки весов для бинарных классов 0 и 1 следующим образом:
weight = alpha для класса 1 (target == 1) weight = 1 - alpha для класса 0, где alpha — число в диапазоне [0, 1].
| Аргументы | |
|---|---|
y_true | Значения истинности, форма (batch_size, d0, .. dN). |
y_pred | Предсказанные значения, форма (batch_size, d0, .. dN). |
apply_class_balancing | Булево значение, применять ли балансировку весов для бинарных классов 0 и 1. |
alpha | Фактор балансировки весов для класса 1, по умолчанию 0.25, как указано в источнике. Вес для класса 0 — 1.0 - alpha. |
gamma | Параметр фокусировки, по умолчанию 2.0, как указано в источнике. |
from_logits | Ожидается ли, что y_pred будет тензором логарифмов. По умолчанию предполагается, что y_pred кодирует распределение вероятностей. |
label_smoothing | Число в [0, 1]. Если > 0, сгладить метки, приблизив их к 0.5, то есть использовать 1. - 0.5 * label_smoothing для целевого класса и 0.5 * label_smoothing для нецелевого. |
axis | Ось, по которой вычисляется среднее значение. По умолчанию -1. |
| Возвращаемое значение | |
|---|---|
Значение потерь бинарной фокальной перекрёстной энтропии с формой = [batch_size, d0, .. dN-1]. |
Пример:
y_true = [[0, 1], [0, 0]]
y_pred = [[0.6, 0.4], [0.4, 0.6]]
loss = keras.losses.binary_focal_crossentropy(
y_true, y_pred, gamma=2)
assert loss.shape == (2,)
loss
array([0.330, 0.206], dtype=float32)
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/keras/losses/binary_focal_crossentropy