Comment Entraîner un Modèle de Deep Learning avec TensorFlow

Le Deep Learning (apprentissage profond) est une branche du Machine Learning qui repose sur des réseaux de neurones artificiels. Grâce à TensorFlow, un framework puissant développé par Google, il est possible d’entraîner des modèles pour diverses tâches comme la classification d’images, le traitement du langage naturel (NLP) et bien plus encore.

Dans cet article, nous allons voir comment entraîner un modèle de Deep Learning avec TensorFlow, en passant par toutes les étapes essentielles : préparation des données, construction du modèle, entraînement, évaluation et déploiement.


1. Installation et Importation des Bibliothèques

Avant de commencer, assurez-vous que TensorFlow est installé. Si ce n’est pas le cas, installez-le avec la commande :

bashCopierModifierpip install tensorflow

Ensuite, importez les bibliothèques nécessaires :

pythonCopierModifierimport tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt

2. Chargement et Préparation des Données

Nous allons entraîner un modèle sur Fashion MNIST, un ensemble de données contenant 70 000 images de vêtements en niveaux de gris, classées en 10 catégories.

Chargement des données

pythonCopierModifier# Charger le dataset Fashion MNIST
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()

# Affichage de quelques images
plt.figure(figsize=(10, 5))
for i in range(10):
    plt.subplot(2, 5, i+1)
    plt.imshow(train_images[i], cmap="gray")
    plt.axis("off")
plt.show()

Normalisation des données

Les valeurs des pixels vont de 0 à 255. Il est recommandé de les normaliser en les divisant par 255 pour accélérer l’entraînement :

pythonCopierModifiertrain_images = train_images / 255.0
test_images = test_images / 255.0

3. Construction du Modèle

Nous allons construire un réseau de neurones avec TensorFlow et Keras. Le modèle sera constitué de :

  • Une couche Flatten pour convertir l’image 28×28 en un vecteur de 784 valeurs
  • Une couche Dense (128 neurones, activation ReLU) pour apprendre des représentations
  • Une couche Dense (10 neurones, activation softmax) pour la classification
pythonCopierModifiermodel = keras.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),  # Conversion de 28x28 en 1D
    keras.layers.Dense(128, activation='relu'),  # Couche cachée avec 128 neurones
    keras.layers.Dense(10, activation='softmax') # Couche de sortie (10 classes)
])

Compilation du modèle

Avant l’entraînement, il faut compiler le modèle en précisant :
✅ L’optimiseur (Adam, très utilisé en Deep Learning)
✅ La fonction de perte (categorical_crossentropy pour la classification multi-classes)
✅ Les métriques pour évaluer les performances

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

4. Entraînement du Modèle

L’entraînement consiste à montrer les images au modèle et lui permettre d’ajuster ses poids grâce à la rétropropagation.

pythonCopierModifierhistory = model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))

Explication des paramètres :

🔹 train_images, train_labels → Données d’entraînement
🔹 epochs=10 → Nombre d’itérations sur l’ensemble des données
🔹 validation_data → Données de test pour mesurer la performance


5. Évaluation du Modèle

Après l’entraînement, testons le modèle sur l’ensemble de test :

pythonCopierModifiertest_loss, test_acc = model.evaluate(test_images, test_labels)
print(f"Précision sur l’ensemble de test : {test_acc * 100:.2f}%")

L’exactitude (accuracy) indique combien d’images ont été correctement classifiées.


6. Prédictions avec le Modèle

Essayons de prédire la catégorie d’une image :

pythonCopierModifierpredictions = model.predict(test_images)
predicted_label = np.argmax(predictions[0])  # Trouver la classe avec la probabilité la plus élevée
print(f"Classe prédite : {predicted_label}")

Affichage de l’image et de la prédiction

pythonCopierModifierplt.imshow(test_images[0], cmap="gray")
plt.title(f"Prédiction : {predicted_label}")
plt.axis("off")
plt.show()

7. Amélioration du Modèle

Si la précision du modèle est trop faible, voici quelques stratégies d’amélioration :

Ajout de couches supplémentaires

On peut ajouter des couches convolutives (CNN) pour mieux capter les caractéristiques des images.

pythonCopierModifiermodel = keras.Sequential([
    keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
    keras.layers.MaxPooling2D((2, 2)),
    keras.layers.Flatten(),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(10, activation='softmax')
])

Augmentation des données

L’augmentation des données (rotation, zoom, miroir) améliore la généralisation.

pythonCopierModifierfrom tensorflow.keras.preprocessing.image import ImageDataGenerator

datagen = ImageDataGenerator(
    rotation_range=10,
    width_shift_range=0.1,
    height_shift_range=0.1,
    horizontal_flip=True
)
datagen.fit(train_images.reshape(-1, 28, 28, 1))

Ajustement des hyperparamètres

Expérimentez avec :

  • Différentes fonctions d’activation (ReLU, Leaky ReLU, Tanh)
  • Autres optimisateurs (SGD, RMSprop)
  • Régularisation L2 ou Dropout pour éviter le surapprentissage

8. Sauvegarde et Déploiement du Modèle

Une fois satisfait du modèle, sauvegardons-le pour une utilisation future.

pythonCopierModifiermodel.save('fashion_mnist_model.h5')

Pour le recharger plus tard :

pythonCopierModifierloaded_model = keras.models.load_model('fashion_mnist_model.h5')

Ce modèle peut ensuite être déployé sur le web, un serveur ou un mobile avec TensorFlow Lite ou TensorFlow.js.


Conclusion 🎯

Nous avons vu comment entraîner un modèle de Deep Learning avec TensorFlow, en passant par :
✅ Le prétraitement des données
✅ La construction du modèle avec Keras
✅ L’entraînement et l’évaluation
✅ L’amélioration et le déploiement

Avec ces bases, vous êtes prêt à explorer des modèles plus complexes comme les réseaux convolutionnels (CNN), les réseaux récurrents (RNN) et les transformers pour des applications avancées en IA.

🚀 Envie d’aller plus loin ? Testez ces concepts sur vos propres projets et essayez des architectures plus avancées !

carle
carle