notas de estudio tensorflow2.x ocho: entropía cruzada tensorflow (Keras) pérdida de la función

Éstos son algunos de mi propio resumen simple, si lugar equivocado, por favor señalarlo.

A, BinaryCrossentropy clases y funciones binary_crossentropy

clase BinaryCrossentropy con:

tf.keras.losses.BinaryCrossentropy (
from_logits = False, label_smoothing = 0,
reducción = losses_utils.ReductionV2.AUTO,
name = 'binary_crossentropy'
)
1
2
3
4
5
参数解释:

from_logits: true, el resultado indica un distribuciones de probabilidad no predicho, pero el valor exacto de la categoría, y la salida falsa se representa como distribuciones de probabilidad
de reducción: Cuando se calcula una pluralidad de conjuntos de datos (tales como múltiples lotes), el cálculo usado para representar la pérdida qué hacer el procesamiento, varios valores del valor de atributo incluido tf.keras.losses.Reduction, principalmente:
papel valor
modo de procesamiento AUTO se determina de acuerdo con el contexto
nINGUNO sin ningún tratamiento, para mantener el valor predeterminado
suma obtenida para cada grupo la pérdida de la suma de
la pérdida de ingresos para cada SUM_OVER_BATCH_SIZE media de grupo
primero mirar sólo cuando un conjunto de datos, su fórmula es la forma:

y_true = [1., 0., 1., 0.]
y_pred = [1., 1., 1., 0.]
bce = tf.keras.losses.BinaryCrossentropy ()
pérdida = bce (y_true, y_pred)
de impresión ( 'Pérdida:', loss.numpy ())

#输出: Pérdida: 3,833
'''
# EPSILON = 1e-7, y = y_true, y` = y_pred, máx_y = 0.9999999
# y` = clip_ops.clip_by_value (salida, épsilon, 1. - Epsilon)
# y` = [ máx_y, máx_y, máx_y, épsilon]

La métrica = # - (registro Y (y` EPSILON +) + (1 -. Y) log (1 -. EPSILON y` +))
# = [-log (máx_y + épsilon), -log (1 -. EPSILON máx_y +),
-log # (+ máx_y épsilon), -log (. 1)]
# = [(0 + 15,33) / 2, (0 + 0) / 2]
# Metric reducido = 7,665 / 2 = 3,833
'' '
. 1
2
. 3
. 4
. 5
. 6
. 7
. 8
. 9
10
. 11
12 es
13 es
14
15
16
17.
18 es
para demostrar el papel específico de parámetros de reducción, que proporcionar dos conjuntos de datos son calculados para se calcula cada grupo y el ejemplo anterior es el mismo:

y_true=([1., 0., 1., 0.], [1., 1., 1., 0.])
y_pred=([1., 1., 1., 0.], [1., 0., 1., 0.])

= Tf.keras.losses.BinaryCrossentropy BCE ()
Pérdida = BCE (y_true, y_pred)
Imprimir ( 'Pérdida:', loss.numpy ())
de salida # defecto: 3.8447733: Pérdida
1.
2
3.
4.
5.
6.
7.
Predeterminado se puede ver es la búsqueda de un valor medio en el caso, esta vez para cambiar el efecto, como en el ejemplo que se muestra en el siguiente aspecto reducción:

bce = tf.keras.losses.BinaryCrossentropy (
reducción = tf.keras.losses.Reduction.NONE)
loss1 = bce (y_true, y_pred)
print ( 'Pérdida:', loss1.numpy ())

#输出: Pérdida: [3.8333097 3.8562372]
1
2
3
4
5
6
bce = tf.keras.losses.BinaryCrossentropy (
reducción = tf.keras.losses.Reduction.SUM)

loss2 = bce (y_true, y_pred)
print ( 'Pérdida: ', loss2.numpy ())

#求和输出: Pérdida: 7.6895466
1
2
3
4
5
6
7
bce = tf.keras.losses.BinaryCrossentropy (
reducción = tf.keras.losses.Reduction.SUM_OVER_BATCH_SIZE)

loss3 = bce (y_true, y_pred)
print ( 'Pérdida: ', loss3.numpy ())

# Salida Promediado: Pérdida: 3.8447733
. 1
2
3.
4.
5.
6.
7.
Uso función binary_crossentropy:

tf.keras.losses.binary_crossentropy (
y_true, y_pred, from_logits = False, label_smoothing = 0
)
1
2
3
y_true = [1., 0., 1., 0.]
y_pred = [1., 1., 1., 0.]
pérdida = tf.keras.losses.binary_crossentropy (
y_true, y_pred)
print ( 'pérdida:', loss.numpy ())
#输出: 3.833
1
2
3
4
5
6
二, CategoricalCrossentropy类和categorical_crossentropy函数.

clase CategoricalCrossentropy

tf.keras.losses.CategoricalCrossentropy (
from_logits = False, label_smoothing = 0,
reducción = losses_utils.ReductionV2.AUTO,
name = 'categorical_crossentropy'
)
1
2
3
4
5
y_true = ([0, 1, 0], [0, 0 , 1])
y_pred = ([0,05, 0,95, 0], [0,1, 0,8, 0,1])
cce = tf.keras.losses.CategoricalCrossentropy ()
pérdida = cce (y_true, y_pred)
print ( 'pérdida:', la pérdida de .numpy ())

#输出: Pérdida: 1,176
'''
# EPSILON = 1e-7, y = y_true, y` = y_pred
# y` = clip_ops.clip_by_value (salida, épsilon, 1. - Epsilon)
# y` = [[0.05, 0.95 , épsilon], [0,1, 0,8, 0,1]]

-Sum Xent = # (Y * log (Y '), Axis = -1)
# = - ((log 0,95), (0,1 log))
# = [0,051, 2,302]
# reducido Xent = (0.051 + 2.302) / 2 = 1,176
''
. 1
2
. 3
. 4
. 5
. 6
. 7
. 8
. 9
10
. 11
12 es
13 es
14
15
16
. 17
también se puede ver que el valor medio calculado de manera predeterminada, el resultado del cálculo se puede cambiar a una pluralidad de conjuntos de datos estableciendo el valor de la reducción del exactamente el enfoque mismo, el uso y BinaryCrossentropy describen aquí no quiere decir, puede intentarlo por sí mismo.
función categorical_crossentropy

tf.keras.losses.categorical_crossentropy (
y_true, y_pred, from_logits = False, label_smoothing = 0
)
1
2
3
y_true = ([0, 1, 0], [0, 0, 1])
y_pred = ([0.05, 0.95, 0], [0,1, 0,8, 0,1])
pérdida = tf.keras.losses.categorical_crossentropy (
y_true, y_pred)
print ( 'pérdida:', loss.numpy ())

# Salida: Pérdida: 1.176
. 1
2
. 3
. 4
. 5
. 6
. 7
, además del uso, sino que también se pueden utilizar como model.compile () en los parámetros de pérdida, como sigue:
Importación tensorflow TF AS

= Entradas tf.keras.Input (forma = (. 3,))
X = tf.keras.layers.Dense (. 4, la activación = tf.nn.relu) (entradas)
Salidas tf.keras.layers.Dense = (. 5, = tf.nn.softmax activación) (X)
Modelo = tf.keras.Model (entradas = entradas, salidas Salidas =)
. 1
2
. 3
. 4
. 5
. 6
model.compile ( 'SGD',
Pérdida = tf.keras.losses.BinaryCrossentropy ())
model.compile ( 'SGD',
Pérdida = tf.keras.losses.binary_crossentropy)
 hospital de Zhengzhou los hombres vean que buen hogar: http: //www.xasgnanke.com/ Zhengzhou que el tratamiento hospitalario de sexo masculino: http: / hombres /www.xasgnanke.com/ Zhengzhou y el hospital Los mejores resultados: HTTP: //www.xasgnanke.com/
model.compile ( 'SGD',
Pérdida = tf.keras.losses.CategoricalCrossentropy ())
model.compile ( 'SGD',
pérdida = tf.keras.losses.categorical_crossentropy)

. 1
2
3.
4.
5.
6.
7.
8.
9.
10
Una cosa a observar es que, si se utiliza una clase, no se olvide que hay una pieza de montaje posterior, para la obtención de instancia de objeto, y sólo escritura función si el nombre de la función en él

En tercer lugar, y por último, por otra parte, es decir, si es o BinaryCrossentropy CategoricalCrossentropy, de hecho, ambos pueden ser utilizados en la clasificación binaria o múltiple, los límites no tan obvias, que se extiende sobre la base de la antigua vamos. Sin embargo, en circunstancias normales se llevan a cabo de acuerdo con el uso predeterminado utilizado en el ejemplo anterior.
----------------
responsabilidad: Este artículo es RDCC blogger "artículo original universal de Alex negro', siga el CC 4.0 BY-SA acuerdo de derecho de autor, que se reproduce, por favor incluya la fuente original enlace y esta declaración.
fuente original: https: //blog.csdn.net/qq_39507748/article/details/105005427

Supongo que te gusta

Origin www.cnblogs.com/sushine1/p/12642821.html
Recomendado
Clasificación