TF2.0 — tf.keras.losses.BinaryCrossentropy

Directorio de artículos

BinaryCrossentropía

tf.keras.losses.BinaryCrossentropy(
    from_logits=False, label_smoothing=0, reduction=losses_utils.ReductionV2.AUTO,
    name='binary_crossentropy'
)

descripción

Calcule la pérdida de entropía cruzada entre la etiqueta real y la etiqueta predicha.
Cuando solo hay dos clases de etiquetas (asumiendo 0 y 1), use esta pérdida de entropía cruzada. Para cada ejemplo, cada predicción debe tener un valor de punto flotante

parámetro

from_logit
si y_pred se interpreta como tensor de valor logit.
De forma predeterminada, asumimos que y_pred contiene la probabilidad (es decir, el valor en [0, 1])

El número de
coma flotante label_smoothing está en [0,1].
Si es 0, no se realizará ningún suavizado.
Cuando> 0, calcularemos la pérdida entre la etiqueta predicha y la versión suavizada de la etiqueta verdadera, donde el suavizado comprimirá la etiqueta hacia 0.5.
Un valor mayor de label_smoothing corresponde a una suavidad más pesada

reducción
(opcional) Tipo de tf.keras.losses.reducción, aplicable a pérdida. El valor predeterminado es automático.
AUTO indica que la opción de reducción será determinada por el uso.

name
(opcional) El nombre de la op. El valor predeterminado es 'binary_crossenropy'

Parámetros del objeto de instancia llamado

y_true: valor verdadero

y_pred: valor predicho

El
sample_weight opcional de sample_weight se utiliza como coeficiente de pérdida.
Si se proporciona un escalar, la pérdida simplemente se escalará por el valor dado.
Si sample_weight es un tensor de tamaño [batch_size], entonces la pérdida total de cada muestra del lote será reescalada por el elemento correspondiente en el vector sample_weight.
Si la forma de sample_weight es [batch_size, d0, ... dN-1] (o puede transmitirse a esta forma), entonces cada elemento de pérdida de y_pred será escalado por el valor correspondiente de sample_weight.

Ejemplo

Uso independiente

y_true = [[0., 1.], [0., 0.]]
y_pred = [[0.6, 0.4], [0.4, 0.6]]
# Using 'auto'/'sum_over_batch_size' reduction type.
bce = tf.keras.losses.BinaryCrossentropy()
bce(y_true, y_pred).numpy()
0.815

# Calling with 'sample_weight'.
bce(y_true, y_pred, sample_weight=[1, 0]).numpy()
0.458
 # Using 'sum' reduction type.
 bce = tf.keras.losses.BinaryCrossentropy(
     reduction=tf.keras.losses.Reduction.SUM)
 bce(y_true, y_pred).numpy()
 1.630
# Using 'none' reduction type.
bce = tf.keras.losses.BinaryCrossentropy(
    reduction=tf.keras.losses.Reduction.NONE)
bce(y_true, y_pred).numpy()

** Usado en la API tf.keras **

model.compile(optimizer='sgd', loss=tf.keras.losses.BinaryCrossentropy())

Supongo que te gusta

Origin blog.csdn.net/weixin_46649052/article/details/112707572
Recomendado
Clasificación