Path: blob/master/site/pt-br/guide/migrate/early_stopping.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
Como migrar paradas antecipadas (early stopping)
Este notebook demonstra como configurar o treinamento de modelos com parada antecipada (early stopping), primeiro no TensorFlow 1 com tf.estimator.Estimator
e um hook de parada antecipada e, em seguida, no TensorFlow 2 com APIs Keras ou um loop de treinamento personalizado. A parada antecipada é uma técnica de regularização que interrompe o treinamento se, por exemplo, a perda de validação atingir um determinado limite.
No TensorFlow 2, há três maneiras de implementar a parada antecipada:
Use um callback integrado do Keras —
tf.keras.callbacks.EarlyStopping
— e passe-o paraModel.fit
.Defina um callback personalizado e passe-o para Keras
Model.fit
.Escreva uma regra de parada antecipada personalizada num loop de treinamento personalizado (com
tf.GradientTape
).
Configuração
TensorFlow 1: parada antecipada com um hook de parada antecipada e tf.estimator
Comece definindo funções para carregamento e pré-processamento do dataset MNIST e definição do modelo a ser usado com tf.estimator.Estimator
:
No TensorFlow 1, a parada antecipada funciona configurando um hook de parada antecipada com tf.estimator.experimental.make_early_stopping_hook
. Você passa o hook para o método make_early_stopping_hook
como um parâmetro para should_stop_fn
, que pode aceitar uma função sem nenhum argumento. O treinamento para assim que should_stop_fn
retorna True
.
O exemplo a seguir demonstra como implementar uma técnica de parada antecipada que limita o tempo de treinamento a um máximo de 20 segundos:
TensorFlow 2: parada antecipada com callback integrado e Model.fit
Prepare o dataset MNIST e um modelo Keras simples:
No TensorFlow 2, ao usar Keras Model.fit
integrado (ou Model.evaluate
), você pode configurar a parada antecipada passando um callback integrado — tf.keras.callbacks.EarlyStopping
— para o parâmetro callbacks
de Model.fit
.
O callback EarlyStopping
monitora uma métrica especificada pelo usuário e encerra o treinamento quando ele para de melhorar. (Veja Treinamento e avaliação com os métodos integrados ou a Documentação da API para mais informações.)
Abaixo está um exemplo de um callback de parada antecipada que monitora a perda e interrompe o treinamento após o número de épocas que não mostram melhorias ser definido como 3
(patience
):
TensorFlow 2: parada antecipada com callback personalizado e Model.fit
Você também pode implementar um callback personalizado de parada antecipada, que também pode ser passado para o parâmetro callbacks
de Model.fit
(ou Model.evaluate
).
Neste exemplo, o processo de treinamento é interrompido quando self.model.stop_training
é definido como True
:
TensorFlow 2: parada antecipada com um loop de treinamento personalizado
No TensorFlow 2, você pode implementar a parada antecipada em um loop de treinamento personalizado se não estiver treinando e avaliando com os métodos Keras integrados.
Comece usando as APIs Keras para definir outro modelo simples, um otimizador, uma função de perda e métricas:
Defina as funções de atualização de parâmetro com tf.GradientTape e o decorador @tf.function
para acelerar:
Em seguida, escreva um loop de treinamento personalizado, no qual você pode implementar manualmente sua regra de parada antecipada.
O exemplo abaixo mostra como interromper o treinamento quando a perda de validação não melhora depois de um determinado número de épocas:
Próximos passos
Saiba mais sobre a API de callbacks de parada antecipada integrada ao Keras na Documentação da API.
Aprenda a escrever callbacks Keras personalizados, incluindo parada antecipada com perda mínima.
Saiba mais sobre Treinamento e avaliação com os métodos integrados do Keras.
Explore as técnicas comuns de regularização no tutorial Overfit e underfit que usa o callback
EarlyStopping
.