📞 Callbacks
Dans nos scripts d'entraînement, on va utiliser trois callbacks Keras.
Un callback permet d'exécuter une action (ici sauvegarder des données) à différents moments de l'apprentissage (ici à intervalle régulier).
1. Dossiers d'une expérience 📁
Pour chaque expérience, on va créer les dossiers suivants:
dossier_experience = "drive/MyDrive/4A4/experiences/laboratoire1/" + str(id_experience)
dossier_sauvegarde = dossier_experience + "/sauvegarde"
os.makedirs(dossier_experience, exist_ok=True)
os.makedirs(dossier_sauvegarde, exist_ok=True)
2. BackupAndRestore : sauvegarde et reprise automatique 💾
callback_sauvegarde = keras.callbacks.BackupAndRestore(
backup_dir=dossier_sauvegarde,
save_freq=1000,
double_checkpoint=True,
delete_checkpoint=False)
backup_dir: dossier où seront stockées les sauvegardes de l'entraînement.save_freq=1000: une sauvegarde est faite toutes les 1000 batches.double_checkpoint=True: double la sauvegarde pour prévenir les risques de fichiers corrompus.
Utilité :
- Si la session Colab se coupe ou si tu arrêtes l'entraînement, tu peux reprendre là où tu t'es arrêté.
3. ModelCheckpoint : garder le « meilleur » modèle 🏆
fichier_sauvegarde = dossier_experience + '/meilleur.model.keras'
callback_meilleur = keras.callbacks.ModelCheckpoint(
filepath=fichier_sauvegarde,
monitor='val_acc',
mode='max',
save_freq=1000,
save_best_only=True)
filepath: chemin du fichier où sera enregistré le meilleur modèle.monitor='val_acc': métrique surveillée (ici, la précision sur le jeu de validation).mode='max': plus la valeur deval_accest grande, mieux c'est.save_freq=1000: vérifie/sauvegarde toutes les 1000 itérations (batches).save_best_only=True: n'écrit le fichier que si le modèle actuel est meilleur que le précédent.
Utilité :
- À la fin de l'entraînement, tu peux recharger le meilleur modèle obtenu (meilleure
val_acc), et pas simplement le dernier état.
Exemple de rechargement :
meilleur_model = keras.models.load_model(fichier_sauvegarde)
4. CSVLogger : journal d'entraînement dans un fichier CSV 📈
fichier_log = dossier_experience + '/log.csv'
callback_log = keras.callbacks.CSVLogger(fichier_log, append=True)
fichier_log: chemin du fichier CSV où seront écrites les informations d'entraînement.append=True: si le fichier existe déjà, on ajoute les nouvelles lignes au lieu d'écraser.
À chaque epoch, Keras écrit une ligne dans ce CSV avec, par exemple :
epochloss,accuracyval_loss,val_accuracy(si un jeu de validation est utilisé)
Utilité :
- Permet d'analyser l'entraînement après coup (dans Excel, Google Sheets, pandas, etc.).
- Pratique pour tracer des courbes
loss/accuracy.
Exemple d'analyse rapide avec pandas :
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv(fichier_log)
plt.plot(df["loss"], label="loss")
plt.plot(df["val_acc"], label="val_acc")
plt.legend()
plt.show()
5. Regrouper les callbacks
callback = keras.callbacks.CallbackList([
callback_sauvegarde,
callback_meilleur,
callback_log])
Cette liste de callbacks est ensuite passée à model.fit(...), par exemple :
history = model.fit(
x_train,
y_train,
epochs=50,
batch_size=32,
validation_data=(x_val, y_val),
callbacks=[callback])
Pour résumer
info
Ainsi, pendant tout l'entraînement :
- l'état est régulièrement sauvegardé (
BackupAndRestore), - le meilleur modèle est conservé (
ModelCheckpoint), - un journal détaillé est écrit dans un fichier CSV (
CSVLogger).
Nous allons avoir dans le drive une arborescence de dossier de la forme :
drive/
└── MyDrive/
└── 4A4/
└── experiences/
└── laboratoire1/
└── <id_experience>/
├── meilleur.model.keras # meilleur modèle sauvegardé (ModelCheckpoint)
├── log.csv # journal d'entraînement (CSVLogger)
└── sauvegarde/ # sauvegardes pour la reprise automatique (BackupAndRestore)
├── checkpoint # derniers poids / état optimiseur
└── checkpoint.bk # doublons des derniers poids (sécurité)
<id_experience>: identifiant unique de l'expérience (ex: hyper-paramètres, type de modèle ...).sauvegarde/: contient les fichiers nécessaires pour reprendre un entraînement interrompu.best.model.keras: modèle à recharger pour l'évaluation ou la suite des expériences.log.csv: fichier à charger pour tracer les courbes d'apprentissage.