Path: blob/master/site/es-419/guide/migrate/metrics_optimizers.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
Migrar métricas y optimizadores
En TF1, tf.metrics
es el namespace de la API para todas las funciones de métricas. Cada una de las métricas es una función que toma label
y prediction
como parámetros de entrada y devuelve como resultado el tensor de métricas correspondiente. En TF2, tf.keras.metrics
contiene todas las funciones y objetos de métricas. El objeto Metric
puede usarse con tf.keras.Model
y tf.keras.layers.layer
para calcular valores de métricas.
Preparación
Empecemos con un par de imports TensorFlow necesarios,
y prepara algunos datos sencillos para la demostración:
TF1: tf.compat.v1.metrics con Estimator
En TF1, las métricas pueden añadirse a EstimatorSpec
como eval_metric_ops
, y la operación se genera mediante todas las funciones de métricas definidas en tf.metrics
. Puedes seguir el ejemplo para ver cómo usar tf.metrics.accuracy
.
También se pueden añadir métricas al estimador directamente mediante tf.estimator.add_metrics()
.
TF2: API de métricas Keras con tf.keras.Model
En TF2, tf.keras.metrics
contiene todas las clases y funciones de métricas. Están diseñadas con un estilo OOP y se integran estrechamente con otras APIs tf.keras
. Todas las métricas se pueden encontrar en el namespace tf.keras.metrics
, y suele haber un mapeo directo entre tf.compat.v1.metrics
con tf.keras.metrics
.
En el siguiente ejemplo, las métricas se añaden en el método model.compile()
. Los usuarios sólo tienen que crear la instancia de métricas, sin especificar la etiqueta ni el tensor de predicción. El modelo Keras dirigirá la salida del modelo y la etiqueta al objeto métrica.
Con la ejecución eager activada, las instancias tf.keras.metrics.Metric
pueden usarse directamente para evaluar datos numpy o tensores eager. Los objetos tf.keras.metrics.Metric
son contenedores con estado. El valor de la métrica puede actualizarse mediante metric.update_state(y_true, y_pred)
, y el resultado puede recuperarse mediante metrics.result()
.
Para obtener más información sobre tf.keras.metrics.Metric
, consulta la documentación de la API en tf.keras.metrics.Metric
, así como la guía de migración.
Migrar optimizadores TF1.x a optimizadores Keras
Los optimizadores de tf.compat.v1.train
, como el optimizador Adam y el optimizador de descenso gradiente, tienen equivalentes en tf.keras.optimizers
.
La tabla siguiente resume cómo puedes convertir estos optimizadores heredados en sus equivalentes de Keras. Puedes reemplazar directamente la versión TF1.x por la versión TF2, a menos que se requieran pasos adicionales (como actualizar la tasa de aprendizaje predeterminada).
Ten en cuenta que convertir tus optimizadores puede hacer incompatibles los puntos de verificación previos.
TF1.x | TF2 | Pasos adicionales |
---|---|---|
`tf.v1.train.GradientDescentOptimizer` | `tf.keras.optimizers.SGD` | Ninguno |
`tf.v1.train.MomentumOptimizer` | `tf.keras.optimizers.SGD` | Incluye el argumento "momentum" |
`tf.v1.train.AdamOptimizer` | `tf.keras.optimizers.Adam` | Cambia el nombre de los argumentos "beta1" y "beta2" a "beta_1" y "beta_2". |
`tf.v1.train.RMSPropOptimizer` | `tf.keras.optimizers.RMSprop` | Cambia el nombre del argumento "decay" por "rho". |
`tf.v1.train.AdadeltaOptimizer` | `tf.keras.optimizers.Adadelta` | Ninguno |
`tf.v1.train.AdagradOptimizer` | `tf.keras.optimizers.Adagrad` | Ninguno |
`tf.v1.train.FtrlOptimizer` | `tf.keras.optimizers.Ftrl` | Elimina los argumentos "accum_name" y "linear_name" |
`tf.contrib.AdamaxOptimizer` | `tf.keras.optimizers.Adamax` | Cambia el nombre de los argumentos "beta1" y "beta2" a "beta_1" y "beta_2". |
`tf.contrib.Nadam` | `tf.keras.optimizers.Nadam` | Cambia el nombre de los argumentos "beta1" y "beta2" a "beta_1" y "beta_2". |
Nota: En TF2, todos los épsilones (constantes numéricas de estabilidad) ahora están predeterminados a 1e-7
en lugar de 1e-8
. Esta diferencia es insignificante en la mayoría de los casos que se usan.