20.10 Construindo Redes Neurais com Keras e TensorFlow: Uso de Callbacks e Salvamento de Modelos

O desenvolvimento de redes neurais através de bibliotecas como Keras e TensorFlow simplificou significativamente o processo de criação e treinamento de modelos de Deep Learning. Keras, uma API de alto nível que roda em cima do TensorFlow, permite aos usuários construir redes neurais de forma intuitiva e acessível. Uma parte fundamental deste processo é o uso de callbacks e o salvamento de modelos, que são essenciais para o gerenciamento eficiente do treinamento e a preservação de modelos treinados.

Compreendendo Callbacks no Keras

Callbacks são funções que podem ser aplicadas em diferentes estágios do treinamento de uma rede neural, como no início e no fim de cada época, antes ou depois de um lote ser processado, ou mesmo após o treinamento ser finalizado. Essas funções são ferramentas poderosas para monitorar o desempenho do modelo, realizar ajustes dinâmicos, salvar progressos, alterar taxas de aprendizado, parar o treinamento prematuramente (early stopping) e muito mais.

Utilizar callbacks no Keras é bastante simples. Eles são passados como argumentos na função fit() do modelo. O Keras já vem com vários callbacks pré-definidos, mas também é possível criar seus próprios callbacks personalizados.

Callbacks Mais Comuns

  • ModelCheckpoint: Este callback salva o modelo após cada época. É possível configurá-lo para salvar apenas o melhor modelo de acordo com uma métrica de desempenho específica, como a precisão ou a perda de validação.
  • EarlyStopping: Permite interromper o treinamento assim que uma métrica monitorada parar de melhorar, evitando assim o overfitting e economizando tempo e recursos computacionais.
  • ReduceLROnPlateau: Reduz a taxa de aprendizado quando uma métrica de desempenho para de melhorar, possibilitando refinamentos mais delicados nos pesos da rede neural.
  • TensorBoard: Integração com o TensorBoard, uma ferramenta de visualização para TensorFlow, que permite monitorar métricas, visualizar gráficos de computação, distribuições de ativações e muito mais.

Salvando e Carregando Modelos

Além dos callbacks, é crucial saber como salvar e carregar modelos adequadamente. O Keras oferece várias maneiras de salvar um modelo, incluindo a arquitetura, os pesos e até o estado do otimizador. Isso é extremamente útil para retomar o treinamento posteriormente ou para realizar inferências em um ambiente de produção.

A função save() pode ser usada para salvar um modelo inteiro em um único arquivo, que pode ser um arquivo HDF5 ou um diretório TensorFlow SavedModel. Para carregar um modelo salvo, basta usar a função load_model(). Além disso, é possível salvar apenas a arquitetura do modelo em formato JSON ou YAML e os pesos em um arquivo HDF5 separadamente.

Exemplo Prático de Callbacks e Salvamento

Vamos ver como usar alguns desses recursos na prática. Suponha que estamos treinando uma rede neural para classificar imagens em um conjunto de dados:


from keras.models import Sequential
from keras.layers import Dense
from keras.callbacks import ModelCheckpoint, EarlyStopping
from keras.datasets import cifar10

# Carregando e preparando os dados
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
x_train = x_train.astype('float32') / 255
x_test = x_test.astype('float32') / 255

# Construindo o modelo
model = Sequential([
    Dense(512, activation='relu', input_shape=(32 * 32 * 3,)),
    Dense(256, activation='relu'),
    Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# Configurando callbacks
checkpoint = ModelCheckpoint('melhor_modelo.h5', save_best_only=True, monitor='val_loss', mode='min')
early_stopping = EarlyStopping(monitor='val_loss', patience=5)

# Treinando o modelo
history = model.fit(x_train, y_train,
                    epochs=100,
                    batch_size=64,
                    validation_data=(x_test, y_test),
                    callbacks=[checkpoint, early_stopping])

Neste exemplo, o callback ModelCheckpoint está configurado para salvar o melhor modelo com base na perda de validação. Já o EarlyStopping irá parar o treinamento se a perda de validação não melhorar após cinco épocas consecutivas. Após o treinamento, podemos carregar o melhor modelo salvo utilizando load_model('melhor_modelo.h5').

Considerações Finais

O uso de callbacks e o salvamento de modelos no Keras são práticas que podem melhorar significativamente a eficiência e a eficácia do processo de treinamento de redes neurais. Com a capacidade de monitorar o desempenho, fazer ajustes automáticos e preservar o estado do modelo, os desenvolvedores podem focar em outras áreas importantes, como a preparação de dados e a arquitetura da rede. O Keras e o TensorFlow oferecem uma gama de ferramentas que, quando bem utilizadas, podem levar a resultados impressionantes em projetos de Machine Learning e Deep Learning.

Agora responda o exercício sobre o conteúdo:

Qual das seguintes afirmações sobre o uso de callbacks e salvamento de modelos no Keras é correta?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Construindo Redes Neurais com Keras e TensorFlow: Fine-tuning e transferência de aprendizado

Próxima página do Ebook Gratuito:

78Construindo Redes Neurais com Keras e TensorFlow: Fine-tuning e transferência de aprendizado

5 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto