Path: blob/master/site/pt-br/guide/migrate/metrics_optimizers.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
Como migrar métricas e otimizadores
No TF1, tf.metrics
é o namespace da API para todas as funções de métrica. Cada uma das métricas é uma função que usa label
e prediction
como parâmetros de entrada e retorna o tensor da métrica correspondente como resultado. No TF2, tf.keras.metrics
contém todas as funções e objetos de métrica. O objeto Metric
pode ser usado com tf.keras.Model
e tf.keras.layers.layer
para calcular valores de métrica.
Configuração
Vamos começar com algumas importações necessárias do TensorFlow,
e preparar alguns dados simples para demonstração:
TF1: tf.compat.v1.metrics com Estimator
No TF1, as métricas podem ser adicionadas a EstimatorSpec
como eval_metric_ops
, e o op é gerado por meio de todas as funções de métricas definidas em tf.metrics
. Você pode acompanhar o exemplo para ver como usar tf.metrics.accuracy
.
Além disso, as métricas podem ser adicionadas ao estimador diretamente via tf.estimator.add_metrics()
.
TF2: API Keras Metrics com tf.keras.Model
No TF2, tf.keras.metrics
contém todas as classes e funções de métricas. Elas são projetadas em estilo OOP e se integram intimamente com outras APIs tf.keras
. Todas as métricas podem ser encontradas no namespace tf.keras.metrics
e geralmente há um mapeamento direto entre tf.compat.v1.metrics
com tf.keras.metrics
.
No exemplo a seguir, as métricas são adicionadas no método model.compile()
. Os usuários precisam apenas criar a instância da métrica, sem especificar o rótulo e o tensor de previsão. O modelo Keras encaminhará a saída e o rótulo do modelo para o objeto de métricas.
Com a execução antecipada (eager execution) ativada, as instâncias tf.keras.metrics.Metric
podem ser usadas diretamente para avaliar dados numpy ou tensores eager. Os objetos tf.keras.metrics.Metric
são containers stateful. O valor da métrica pode ser atualizado via metric.update_state(y_true, y_pred)
, e o resultado pode ser recuperado com metrics.result()
.
Para mais detalhes sobre tf.keras.metrics.Metric
, consulte a documentação da API em tf.keras.metrics.Metric
, assim como o guia de migração.
Migração de otimizadores TF1.x para otimizadores Keras
Os otimizadores em tf.compat.v1.train
, como o otimizador Adam e o otimizador de método do gradiente, têm equivalentes em tf.keras.optimizers
.
A tabela abaixo resume como você pode converter esses otimizadores herdados aos seus equivalentes Keras. Você pode substituir diretamente a versão TF1.x pela versão TF2, a menos que passos adicionais (como atualizar a taxa de aprendizado padrão) sejam obrigatórios.
Observe que a conversão de seus otimizadores pode deixar os checkpoints antigos incompatíveis.
TF1.x | TF2 | Passos adicionais |
---|---|---|
`tf.v1.train.GradientDescentOptimizer` | `tf.keras.optimizers.SGD` | Nenhum |
`tf.v1.train.MomentumOptimizer` | `tf.keras.optimizers.SGD` | Inclua o argumento `momentum` |
`tf.v1.train.AdamOptimizer` | `tf.keras.optimizers.Adam` | Renomeie os argumentos `beta1` e `beta2` para `beta_1` e `beta_2` |
`tf.v1.train.RMSPropOptimizer` | `tf.keras.optimizers.RMSprop` | Renomeie o argumento `decay` para `rho` |
`tf.v1.train.AdadeltaOptimizer` | `tf.keras.optimizers.Adadelta` | Nenhum |
`tf.v1.train.AdagradOptimizer` | `tf.keras.optimizers.Adagrad` | Nenhum |
`tf.v1.train.FtrlOptimizer` | `tf.keras.optimizers.Ftrl` | Remova os argumentos `accum_name` e `linear_name` |
`tf.contrib.AdamaxOptimizer` | `tf.keras.optimizers.Adamax` | Renomeie os argumentos `beta1` e `beta2` para `beta_1` e `beta_2` |
`tf.contrib.Nadam` | `tf.keras.optimizers.Nadam` | Renomeie os argumentos `beta1` e `beta2` para `beta_1` e `beta_2` |
Observação: No TF2, todos os epsilons (constantes de estabilidade numérica) agora são padronizados para 1e-7
em vez de 1e-8
. Essa diferença é insignificante na maioria dos casos de uso.