20.10 Créer des réseaux de neurones avec Keras et TensorFlow : utiliser des rappels et enregistrer des modèles
Le développement de réseaux de neurones via des bibliothèques telles que Keras et TensorFlow a considérablement simplifié le processus de création et de formation de modèles de Deep Learning. Keras, une API de haut niveau qui s'exécute sur TensorFlow, permet aux utilisateurs de créer des réseaux de neurones de manière intuitive et accessible. Un élément clé de ce processus est l'utilisation de rappels et de modèles de sauvegarde, qui sont essentiels pour gérer efficacement la formation et préserver les modèles formés.
Comprendre les rappels dans Keras
Les rappels sont des fonctions qui peuvent être appliquées à différentes étapes de la formation d'un réseau neuronal, par exemple au début et à la fin de chaque époque, avant ou après le traitement d'un lot, ou même après la fin de la formation. Ces fonctions sont des outils puissants pour surveiller les performances du modèle, effectuer des ajustements dynamiques, enregistrer les progrès, modifier les taux d'apprentissage, arrêter prématurément l'entraînement, et bien plus encore.
Utiliser les rappels dans Keras est assez simple. Ils sont passés en arguments dans la fonction fit()
du modèle. Keras est livré avec plusieurs rappels prédéfinis, mais vous pouvez également créer vos propres rappels personnalisés.
Rappels les plus courants
- ModelCheckpoint : ce rappel enregistre le modèle après chaque époque. Vous pouvez le configurer pour enregistrer uniquement le meilleur modèle en fonction d'une mesure de performances spécifique, telle que la précision ou la perte de validation.
- EarlyStopping : vous permet d'arrêter l'entraînement dès qu'une métrique surveillée cesse de s'améliorer, évitant ainsi le surapprentissage et économisant du temps et des ressources de calcul.
- ReduceLROnPlateau : réduit le taux d'apprentissage lorsqu'une mesure de performance cesse de s'améliorer, ce qui permet d'affiner plus finement la pondération du réseau neuronal.
- TensorBoard : intégration avec TensorBoard, un outil de visualisation pour TensorFlow, qui vous permet de surveiller les métriques, de visualiser les graphiques de calcul, les distributions d'activation, etc.
Enregistrement et chargement de modèles
En plus des rappels, il est crucial de savoir comment enregistrer et charger correctement les modèles. Keras propose plusieurs façons de sauvegarder un modèle, notamment l'architecture, les poids et même l'état de l'optimiseur. Ceci est extrêmement utile pour reprendre la formation plus tard ou pour effectuer des inférences dans un environnement de production.
La fonction save()
peut être utilisée pour enregistrer un modèle entier dans un seul fichier, qui peut être un fichier HDF5 ou un répertoire TensorFlow SavedModel. Pour charger un modèle enregistré, utilisez simplement la fonction load_model()
. De plus, vous pouvez enregistrer uniquement l'architecture du modèle au format JSON ou YAML et les pondérations dans un fichier HDF5 séparément.
Exemple pratique de rappels et de sauvetage
Voyons comment utiliser certaines de ces ressources en pratique. Supposons que nous entraînions un réseau de neurones pour classer des images dans un ensemble de données :
à partir de keras.models, importation séquentielle
à partir de keras.layers importer Dense
à partir de keras.callbacks, importez ModelCheckpoint, EarlyStopping
à partir de keras.datasets importer cifar10
# Chargement et préparation des données
(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
# Construire le modèle
modèle = Séquentiel([
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',
métriques=['précision'])
# Configuration des rappels
checkpoint = ModelCheckpoint('best_model.h5', save_best_only=True, monitor='val_loss', mode='min')
early_stopping = EarlyStopping(monitor='val_loss', patience=5)
# Entraîner le modèle
historique = model.fit(x_train, y_train,
époques = 100,
batch_size=64,
validation_data=(x_test, y_test),
callbacks=[checkpoint, early_stopping])
Dans cet exemple, le rappel ModelCheckpoint
est configuré pour enregistrer le meilleur modèle en fonction de la perte de validation. EarlyStopping
arrêtera l'entraînement si la perte de validation ne s'améliore pas après cinq époques consécutives. Après la formation, nous pouvons charger le modèle le mieux enregistré en utilisant load_model('best_model.h5')
.
Considérations finales
L'utilisation de rappels et de modèles de sauvegarde dans Keras est une pratique qui peut améliorer considérablement l'efficience et l'efficacité du processus de formation du réseau neuronal. Avec la possibilité de surveiller les performances, faitesGrâce aux ajustements automatiques et à la préservation de l'état du modèle, les développeurs peuvent se concentrer sur d'autres domaines importants tels que la préparation des données et l'architecture réseau. Keras et TensorFlow proposent une gamme d'outils qui, lorsqu'ils sont bien utilisés, peuvent conduire à des résultats impressionnants dans les projets de Machine Learning et de Deep Learning.