Path: blob/master/site/pt-br/guide/keras/custom_callback.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
Escrevendo seus próprios callbacks
Introdução
Um callback é uma ferramenta poderosa para personalizar o comportamento de um modelo Keras durante o treinamento, avaliação ou inferência. Exemplos incluem tf.keras.callbacks.TensorBoard
para visualizar o progresso e os resultados do treinamento com o TensorBoard ou tf.keras.callbacks.ModelCheckpoint
para salvar seu modelo periodicamente durante o treinamento.
Neste guia, você aprenderá o que é um callback Keras, o que ele pode fazer e como você pode criar o seu próprio. Fornecemos algumas demonstrações de aplicativos de callback simples para você começar.
Configuração
Visão geral dos callbacks do Keras
Todos os callbacks são subclasses da classe keras.callbacks.Callback
e substituem um conjunto de métodos chamados em diferentes estágios de treinamento, teste e previsão. Callbacks são úteis para se obter uma visão dos estados internos e estatísticas do modelo durante o treinamento.
Você pode passar uma lista de callbacks (como o argumento de palavra-chave callbacks
) para os seguintes métodos de modelo:
keras.Model.fit()
keras.Model.evaluate()
keras.Model.predict()
Uma visão geral dos métodos de callback
Métodos globais
on_(train|test|predict)_begin(self, logs=None)
Chamado no início de fit
/evaluate
/predict
.
on_(train|test|predict)_end(self, logs=None)
Chamado no final de fit
/evaluate
/predict
.
Métodos em nível de lote para treinamento/teste/previsão
on_(train|test|predict)_batch_begin(self, batch, logs=None)
Chamado imediatamente antes de processar um lote durante o treinamento/teste/previsão.
on_(train|test|predict)_batch_end(self, batch, logs=None)
Chamado ao final do treinamento/teste/previsão de um lote. Nesse método, logs
é um dict que contém os resultados das métricas.
Métodos de nível de época (somente treinamento)
on_epoch_begin(self, epoch, logs=None)
Chamado no início de uma época durante o treinamento.
on_epoch_end(self, epoch, logs=None)
Chamado ao final de uma época durante o treinamento.
Um exemplo básico
Vamos dar uma olhada num exemplo concreto. Para começar, vamos importar o tensorflow e definir um modelo Keras Sequential simples:
Em seguida, carregue os dados MNIST para treinamento e teste da API de datasets do Keras:
Agora, defina um callback personalizado simples que registre:
Quando o
fit
/evaluate
/predict
começa e terminaQuando cada época começa e termina
Quando cada lote de treinamento começa e termina
Quando cada lote de avaliação (teste) começa e termina
Quando cada lote de inferência (previsão) começa e termina
Vamos experimentar:
Uso do dict logs
O dict logs
contém o valor da perda e todas as métricas ao final de um lote ou época. O exemplo inclui a perda e o erro absoluto médio.
Uso do atributo self.model
Além de receber informações de log quando um de seus métodos é chamado, os callbacks têm acesso ao modelo associado à rodada atual de treinamento/avaliação/inferência: self.model
.
Eis algumas coisas que você pode fazer com self.model
em um callback:
Definir
self.model.stop_training = True
para interromper imediatamente o treinamento.Modificar hiperparâmetros do otimizador (disponível como
self.model.optimizer
), tais comoself.model.optimizer.learning_rate
.Salvar o modelo em intervalos periódicos.
Registrar a saída de
model.predict()
em algumas amostras de teste ao final de cada época, para usar como uma verificação de sanidade durante o treinamento.Extrair visualizações de recursos intermediários ao final de cada época, para monitorar o que o modelo está aprendendo ao longo do tempo.
etc.
Vamos ver isto em ação em alguns exemplos.
Exemplos de aplicativos de callback do Keras
Parada antecipada com perda mínima
Este primeiro exemplo mostra a criação de um Callback
que interrompe o treinamento quando a perda mínima é atingida, configurando o atributo self.model.stop_training
(boolean). Opcionalmente, você pode fornecer um argumento patience
para especificar quantas épocas devemos esperar antes de parar depois de atingir um mínimo local.
O tf.keras.callbacks.EarlyStopping
fornece uma implementação mais completa e geral.
Programação da taxa de aprendizado
Neste exemplo, mostramos como um Callback personalizado pode ser usado para alterar dinamicamente a taxa de aprendizado do otimizador durante o treinamento.
Veja callbacks.LearningRateScheduler
para implementações mais gerais.
Callbacks Keras integrados
Não deixe de dar uma olhada nos callbacks Keras existentes lendo a documentação da API. As aplicações incluem fazer log em CSV, salvar o modelo, visualizar métricas no TensorBoard e muito mais!