20.10. Construindo Redes Neurais com Keras e TensorFlow: Uso de callbacks e salvamento de modelos

Página 77

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.

Now answer the exercise about the content:

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

You are right! Congratulations, now go to the next page

You missed! Try again.

Next page of the Free Ebook:

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

Earn your Certificate for this Course for Free! by downloading the Cursa app and reading the ebook there. Available on Google Play or App Store!

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text