Free Ebook cover Machine Learning and Deep Learning with Python

Machine Learning and Deep Learning with Python

4.75

(4)

112 pages

Building Neural Networks with Keras and TensorFlow: Using callbacks and saving models

Capítulo 77

Estimated reading time: 5 minutes

Audio Icon

Listen in audio

0:00 / 0:00

20.10 Building Neural Networks with Keras and TensorFlow: Using Callbacks and Saving Models

The development of neural networks through libraries such as Keras and TensorFlow has significantly simplified the process of creating and training Deep Learning models. Keras, a high-level API that runs on top of TensorFlow, allows users to build neural networks in an intuitive and accessible way. A key part of this process is the use of callbacks and saving models, which are essential for efficiently managing training and preserving trained models.

Understanding Callbacks in Keras

Callbacks are functions that can be applied at different stages of training a neural network, such as at the beginning and end of each epoch, before or after a batch is processed, or even after training is finished. These functions are powerful tools for monitoring model performance, making dynamic adjustments, saving progress, changing learning rates, stopping training prematurely, and more.

Using callbacks in Keras is quite simple. They are passed as arguments in the template's fit() function. Keras comes with several predefined callbacks, but you can also create your own custom callbacks.

Most Common Callbacks

  • ModelCheckpoint: This callback saves the model after each epoch. You can configure it to save only the best model according to a specific performance metric, such as accuracy or validation loss.
  • EarlyStopping: Allows you to stop training as soon as a monitored metric stops improving, thus avoiding overfitting and saving time and computational resources.
  • ReduceLROnPlateau: Reduces the learning rate when a performance metric stops improving, enabling finer refinements to the neural network weights.
  • TensorBoard: Integration with TensorBoard, a visualization tool for TensorFlow, which allows you to monitor metrics, visualize computation graphs, activation distributions, and more.

Saving and Loading Templates

In addition to callbacks, it is crucial to know how to save and load models properly. Keras offers several ways to save a model, including the architecture, weights, and even the optimizer state. This is extremely useful for resuming training later or for performing inferences in a production environment.

The save() function can be used to save an entire model to a single file, which can be an HDF5 file or a TensorFlow SavedModel directory. To load a saved model, simply use the load_model() function. Additionally, you can save just the model architecture in JSON or YAML format and the weights in an HDF5 file separately.

Continue in our app.

You can listen to the audiobook with the screen off, receive a free certificate for this course, and also have access to 5,000 other free online courses.

Or continue reading below...
Download App

Download the app

Practical Example of Callbacks and Rescue

Let's see how to use some of these resources in practice. Suppose we are training a neural network to classify images in a dataset:


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

# Loading and preparing data
(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

# Building the model
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'])

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

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

In this example, the ModelCheckpoint callback is configured to save the best model based on validation loss. EarlyStopping will stop training if the validation loss does not improve after five consecutive epochs. After training, we can load the best saved model using load_model('best_model.h5').

Final Considerations

Using callbacks and saving models in Keras are practices that can significantly improve the efficiency and effectiveness of the neural network training process. With the ability to monitor performance, makeautomatic adjustments and preserving model state, developers can focus on other important areas such as data preparation and network architecture. Keras and TensorFlow offer a range of tools that, when used well, can lead to impressive results in Machine Learning and Deep Learning projects.

Now answer the exercise about the content:

Which of the following statements about using callbacks and saving models in Keras is correct?

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

You missed! Try again.

The ModelCheckpoint callback can be configured to save the best model based on a specific performance metric like validation loss, as described. This is a pivotal function for managing model training and retention of the best-performing models.

Next chapter

Building Neural Networks with Keras and TensorFlow: Fine-tuning and transfer learning

Arrow Right Icon
Download the app to earn free Certification and listen to the courses in the background, even with the screen off.