0% ont trouvé ce document utile (0 vote)
3 vues35 pages

5 - ProgPython IA - Partie 5 - TensorFlow

Le document présente une introduction au Deep Learning et à TensorFlow/Keras, en expliquant les concepts fondamentaux comme les réseaux de neurones, la propagation avant, et la rétropropagation. Il décrit également le fonctionnement de TensorFlow, y compris la manipulation de tensors, la création de graphes de calcul, et les étapes d'entraînement d'un modèle. Enfin, un exemple pratique est fourni, illustrant la construction et l'entraînement d'un modèle de classification sur le dataset MNIST.

Transféré par

romilton paquete
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues35 pages

5 - ProgPython IA - Partie 5 - TensorFlow

Le document présente une introduction au Deep Learning et à TensorFlow/Keras, en expliquant les concepts fondamentaux comme les réseaux de neurones, la propagation avant, et la rétropropagation. Il décrit également le fonctionnement de TensorFlow, y compris la manipulation de tensors, la création de graphes de calcul, et les étapes d'entraînement d'un modèle. Enfin, un exemple pratique est fourni, illustrant la construction et l'entraînement d'un modèle de classification sur le dataset MNIST.

Transféré par

romilton paquete
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Python Pour l’IA

Pr. EL AZAMI
[Link]@[Link]
Chapitre 6: TensorFlow/Keras
Deep Learning

elazami © 2025-2026 2
Introduction: Définition DL
Définition du Deep Learning
• Le Deep Learning (ou apprentissage profond) est une branche du machine learning qui utilise des
réseaux de neurones artificiels comportant plusieurs couches pour apprendre
automatiquement des représentations complexes à partir de grandes quantités de données.
• Il permet d’extraire lui-même les caractéristiques pertinentes, sans nécessiter une ingénierie
manuelle des features,
• et atteint des performances très élevées dans des tâches comme:
• la vision par ordinateur,
• le traitement du langage naturel ou
• la reconnaissance vocale.

elazami © 2025-2026 3
Introduction: Éléments Fondamentaux du DL
1. Réseaux de neurones artificiels (ANN)
• Un réseau est composé de :
- Neurones (nœuds)
- Poids et biais
- Fonctions d’activation (ReLU, Sigmoid, Tanh, etc.)
• Chaque neurone calcule une combinaison linéaire, suivie d’une activation non linéaire.

elazami © 2025-2026 4
Introduction: Éléments Fondamentaux du DL
2. Architecture en couches profondes
Les modèles deep learning utilisent plusieurs couches :
- Couche d’entrée
- Couches cachées (souvent nombreuses)
- Couche de sortie
• Plus il y a de couches, plus le modèle peut apprendre des représentations abstraites et
complexes.

elazami © 2025-2026 5
Introduction: Éléments Fondamentaux du DL
3. Propagation avant (Forward Propagation)
• Les données traversent les couches du réseau pour produire une prédiction.
• Chaque couche transforme progressivement la représentation des données.

elazami © 2025-2026 6
Introduction: Éléments Fondamentaux du DL
4. Fonction de perte (Loss Function)
• Elle mesure l’erreur entre la prédiction et la réalité :
- MSE pour la régression
- Cross Entropy pour la classification
- etc.
• L’objectif est de minimiser cette erreur.

elazami © 2025-2026 7
Introduction: Éléments Fondamentaux du DL
4. Fonction de perte (Loss Function)

elazami © 2025-2026 8
Introduction: Éléments Fondamentaux du DL
5. Rétropropagation et optimisation
• Le réseau ajuste ses paramètres grâce :
- à la rétropropagation du gradient
- à un optimiseur (SGD, Adam, RMSprop…)
• Ce processus met à jour les poids pour réduire progressivement la fonction de perte.

elazami © 2025-2026 9
Introduction: Éléments Fondamentaux du DL
6. Grand volume de données et GPU
• Le deep learning fonctionne généralement mieux lorsque :
- il y a beaucoup de données,
- ou la réalisation d’apprentissage via GPU/TPU pour accélérer les calculs
matriciels massifs.

elazami © 2025-2026 10
Introduction: Éléments Fondamentaux du DL
7. Spécialisation des architectures
Selon les tâches :
• CNN (Convolutional Neural Networks) → images
• RNN / LSTM / GRU → séquences, texte
• Transformers → NLP, Vision, multimodal
• Auto-encoders → réduction de dimension, génération
• GAN → génération d’images réalistes

elazami © 2025-2026 11
DL: TensorFlow
• TensorFlow est un framework open-source de Google conçu pour créer, entraîner et
déployer des modèles de deep learning.
• Il fonctionne en manipulant des tensors (tableaux multidimensionnels) et en utilisant
des graphes de calcul pour exécuter efficacement les opérations mathématiques sur
CPU, GPU ou TPU.

elazami © 2025-2026 12
TensorFlow: Éléments fondamentaux
1. Les Tensors : la base de TensorFlow
• Un tensor est simplement un tableau de données :
• scalaire : 0D
• vecteur : 1D
• matrice : 2D
• tenseur : nD
• TensorFlow manipule les données sous forme de tensors, ce qui permet de faire des
opérations parallélisées et optimisées.

elazami © 2025-2026 13
TensorFlow: Éléments fondamentaux
2. Le graphe de calcul
• TensorFlow fonctionne en créant un graphe computationnel :
• les nœuds = opérations mathématiques (matrices, convolutions, activations…)
• les arêtes = tensors qui circulent entre les nœuds
• Ce graphe est ensuite exécuté par le moteur TensorFlow (runtime), ce qui rend
l’entraînement rapide et optimisé, notamment sur GPU/TPU.

elazami © 2025-2026 14
TensorFlow: Éléments fondamentaux
3. Création des modèles
TensorFlow propose deux approches principales :
• API Keras (haut niveau – la plus utilisée)
• Simple, intuitive
• Création de modèles en quelques lignes
• exemple : [Link], [Link]()
• TensorFlow Core (bas niveau)
• Contrôle total des opérations
• Permet de construire des modèles personnalisés
• Aujourd’hui, Keras est l’API standard pour le deep learning avec TensorFlow.

elazami © 2025-2026 15
TensorFlow: Éléments fondamentaux
4. Forward Pass (propagation avant)
• Quand une entrée traverse le modèle :
1. le tensor passe par chaque couche
2. chaque couche applique une opération : convolution, multiplication matricielle,
activation…
3. un tensor de sortie est produit
• TensorFlow exécute ces opérations de façon optimisée via le graphe.

elazami © 2025-2026 16
TensorFlow: Éléments fondamentaux
5. Calcul de la fonction de perte
• Après la prédiction, TensorFlow calcule l'erreur via une loss function (ex : cross-entropy).
• La perte est un scalaire représentant la qualité du modèle.

elazami © 2025-2026 17
TensorFlow: Éléments fondamentaux
6. Rétropropagation automatique (AutoDiff)
TensorFlow utilise Automatic Differentiation pour calculer automatiquement :
• les gradients de la perte
• par rapport aux poids du réseau
Il utilise pour cela :

with [Link]() as tape:

• Cela remplace le calcul manuel et rend


l’entraînement automatisé.

elazami © 2025-2026 18
TensorFlow: Éléments fondamentaux
7. Optimisation
• Les gradients sont envoyés à un optimiseur qui met à jour les poids du modèle pour
réduire la perte:
• Adam
• SGD
• RMSprop
• TensorFlow fait cela automatiquement lors de l’appel à :

[Link](...)

elazami © 2025-2026 19
TensorFlow: Éléments fondamentaux
8. Entraînement (Training Loop)
• En résumé, chaque epoch suit cette boucle :
1. Passage des données dans le modèle (forward pass)
2. Calcul de la perte
3. Gradient des poids via autodiff
4. Mise à jour des poids via l’optimiseur
5. Suivi des métriques (accuracy, loss, etc.)
• TensorFlow optimise tout cela en parallèle (batches, GPU…).

elazami © 2025-2026 20
TensorFlow: Éléments fondamentaux
9. Exécution accélérée (GPU / TPU)
TensorFlow sait optimiser automatiquement :
• la parallélisation des opérations
• l’utilisation de NVIDIA CUDA pour les GPUs
• l’accélération sur les TPUs de Google
L’utilisateur n’a qu’à écrire :

with [Link]('/GPU:0'): # ou TPU:0 ou CPU:0 ou GPU:1

• Mais même sans cela, TensorFlow choisit automatiquement le meilleur device.

elazami © 2025-2026 21
TensorFlow: Éléments fondamentaux
10. Sauvegarde et déploiement
TensorFlow permet facilement de :
• sauvegarder un modèle ([Link]())
• l’exporter en format TensorFlow SavedModel
• l'utiliser pour l’inference dans :
• TensorFlow Lite (mobile)
• [Link] (web)
• serveurs de production

elazami © 2025-2026 22
TensorFlow
En résumé:
TensorFlow fonctionne en :
• manipulant des tensors
• créant un graphe d’opérations
• exécutant ce graphe de manière optimisée
• automatisant la forward pass, la loss, la rétropropagation, et l’optimisation
• permettant un entraînement accéléré via GPU/TPU
• facilitant la création, l’entraînement et le déploiement de modèles via Keras

elazami © 2025-2026 23
Exemple: TensorFlow/Keras
Exemple simple en TensorFlow/Keras
• un petit modèle de classification sur le dataset MNIST (chiffres manuscrits).
• Objectif : Entraîner un réseau de neurones fully connected (dense) pour reconnaître des chiffres (0–9).
import tensorflow as tf # 3. Compiler le modèle
from [Link] import layers, models [Link](
optimizer='adam',
# 1. Charger le dataset MNIST loss='sparse_categorical_crossentropy',
(x_train, y_train), (x_test, y_test) = [Link].load_data() metrics=['accuracy']
)
# Normalisation des images (0-255 ➜ 0-1)
x_train = x_train / 255.0 # 4. Entraîner le modèle
x_test = x_test / 255.0 [Link](x_train, y_train, epochs=5, batch_size=32)

# Aplatir les images 28x28 → 784 # 5. Évaluer sur le test set


x_train = x_train.reshape(-1, 28*28) loss, accuracy = [Link](x_test, y_test)
x_test = x_test.reshape(-1, 28*28) print(f"Test accuracy : {accuracy:.4f}")

# 2. Construire le modèle # 6. Faire une prédiction


model = [Link]([ pred = [Link](x_test[:1])
[Link](128, activation='relu', input_shape=(784,)), print("Classe prédite :", [Link]())
[Link](64, activation='relu'),
[Link](10, activation='softmax') # 10 classes
])

elazami © 2025-2026 24
Sample images from MNIST test dataset

elazami © 2025-2026 25
elazami © 2025-2026 26
Exemple: TensorFlow/Keras
Explication des étapes:
# Importation
import tensorflow as tf
from [Link] import layers, models

On importe TensorFlow et ses sous-modules Keras.


• layers permet de créer les différentes couches du réseau.
• models permet de construire et assembler le modèle neuronal.

# 1. Chargement des données

(x_train, y_train), (x_test, y_test) = [Link].load_data()

• On charge le dataset MNIST, un jeu d’images 28×28 de chiffres manuscrits.


• Keras fournit directement ce dataset très utilisé pour les exemples, pour éviter de télécharger
des données manuellement.
• [Link] fournit directement les images 28×28 en niveaux de gris.

elazami © 2025-2026 27
Exemple: TensorFlow/Keras
Prétraitement
• normalisation pour stabiliser l'entraînement
• reshape pour transformer l’image en vecteur
# Normalisation des images (0-255 ➜ 0-1)
x_train = x_train / 255.0
x_test = x_test / 255.0
• Les images ont des valeurs de pixels entre 0 et 255.
• Diviser par 255 ramène les valeurs entre 0 et 1, ce qui stabilise et accélère l’entraînement
(meilleure convergence du gradient).
# Aplatir les images 28x28 → 784
x_train = x_train.reshape(-1, 28*28) #-1 représente le nombre automatique d’images.
x_test = x_test.reshape(-1, 28*28) # On transforme chaque image en vector de 784 valeurs.

• Les images sont des matrices 28×28.


• Les couches Dense de Keras attendent un vecteur (1 dimension).
• On transforme donc 28×28 → 784 pour pouvoir les donner au réseau fully connected.
elazami © 2025-2026 28
Exemple: TensorFlow/Keras
Architecture du modèle
• 2 couches denses cachées (128 et 64 neurones)
• activation ReLU
• softmax final → probabilités des 10 classes
# 2. Construire le modèle
model = [Link]([
[Link](128, activation='relu', input_shape=(784,)),
[Link](64, activation='relu'),
[Link](10, activation='softmax')
])

[Link]([...]) [Link](64, activation='relu')


On utilise l’API Sequential car le modèle est linéaire : •Deuxième couche cachée, plus petite que la première.
une couche → une autre → une autre. •Pourquoi ? Réduction progressive de la dimension →
C’est la façon la plus simple de construire un réseau feedforward. aide à la généralisation et réduit le surapprentissage.
[Link](128, activation='relu', input_shape=(784,)) [Link](10, activation='softmax')
•Dense(128) : première couche avec 128 neurones •10 neurones → une sortie par classe (0 à 9).
•Pourquoi ? C’est une taille courante pour débuter, offrant une •softmax transforme la sortie en probabilités qui
bonne capacité d’apprentissage. somment à 1.
•activation='relu' : ReLU est l’activation la plus utilisée pour éviter •Pourquoi ? indispensable pour un problème de
le problème du gradient qui disparaît. classification multiclasse.
•input_shape=(784,) : on spécifie la forme des données en entrée
(obligatoire pour la première couche).
elazami © 2025-2026 29
Exemple: TensorFlow/Keras
# 3. Compiler le modèle
[Link](
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)
optimizer='adam'
Adam est l’un des meilleurs optimiseurs par défaut :
• rapide,
• robuste,
• adapté aux données bruitées.

loss='sparse_categorical_crossentropy'
Cette fonction de perte est adaptée lorsque :
• on a plusieurs classes
• les labels sont des entiers (0,1,2,…), pas des vecteurs one-hot.

metrics=['accuracy']
• On veut suivre la précision pendant l’entraînement.
• Pourquoi ? C’est la métrique la plus intuitive pour la classification.
elazami © 2025-2026 30
Exemple: TensorFlow/Keras
# 4. Entraîner le modèle

[Link](x_train, y_train, epochs=5, batch_size=32)


[Link]()
C’est la fonction qui lance tout le processus d’entraînement :
• propagation avant (forward pass)
• calcul de la perte (loss function)
• rétropropagation automatique
• mise à jour des poids
epochs=5 : On passe 5 fois sur toutes les données.
Pourquoi 5 ? C’est suffisant pour MNIST, dataset simple.
batch_size=32 : On entraîne le réseau par mini-lots de 32 images.
Pourquoi ? c’est un compromis standard entre vitesse et stabilité du gradient.
MNIST contien 70 000 images (60 000 pour l’entrainement et 10 000 de test)

elazami © 2025-2026 31
Exemple: TensorFlow/Keras
# 5. Évaluer sur le test set

loss, accuracy = [Link](x_test, y_test)


print(f"Test accuracy : {accuracy:.4f}")

[Link]() teste le modèle sur des données jamais vues (jeu de test).
• On obtient la perte et la précision.
• Cela permet de mesurer la capacité de généralisation du modèle.

elazami © 2025-2026 32
Exemple: TensorFlow/Keras
# 6. Faire une prédiction

pred = [Link](x_test[:1])
print("Classe prédite :", [Link]())

predict()
Permet d’utiliser le modèle entraîné pour faire une prédiction.
x_test[:1]
On prend une seule image du test (la première).
argmax()
Le softmax renvoie un vecteur de probabilités → on prend la classe avec la plus grande probabilité.

elazami © 2025-2026 33
Exercice: TensorFlow
Exercice : Classification d’images de vêtements avec un réseau de neurones (Fashion-MNIST)
• Construire, entraîner et évaluer un modèle de Deep Learning (réseau de neurones fully-connected)
pour classer des images 28×28 de vêtements dans 10 catégories (T-shirt, sneakers, pull, etc.).

• On vous donne le dataset Fashion-MNIST, composé de 70 000 images en niveaux de gris de vêtements,
déjà disponible dans Keras.
Vous devez :
1. Charger les données via TensorFlow/Keras.
2. Normaliser les images.
3. Construire un réseau de neurones feedforward avec les couches suivantes :
Flatten
Dense 128 neurones, activation ReLU
Dense 10 neurones, activation softmax
4. Compiler le modèle avec :
Optimizer : Adam
Loss : sparse_categorical_crossentropy
Metrics : accuracy
5. Entraîner le modèle (epochs = 10).
6. Évaluer le modèle sur les données de test.
7. Effectuer une prédiction sur une image du test.

elazami © 2025-2026 34
Exercice: Solution
import tensorflow as tf # 5. Entraînement
from [Link] import layers, models history = [Link](X_train, y_train, epochs=10,
validation_split=0.1)
# 1. Charger les données
(X_train, y_train), (X_test, y_test) = [Link].fashion_mnist.load_data() # 6. Évaluation
test_loss, test_acc = [Link](X_test, y_test)
# 2. Normalisation : convertir les pixels de [0,255] -> [0,1] print("Accuracy sur test :", test_acc)
X_train = X_train / 255.0
X_test = X_test / 255.0 # 7. Prédiction d'une image
import numpy as np
# 3. Construire le modèle index = 0
model = [Link]([ image = X_test[index].reshape(1, 28, 28)
[Link](input_shape=(28, 28)), # transformer image 2D en vecteur prediction = [Link](image)
[Link](128, activation='relu'),
[Link](10, activation='softmax') # 10 classes print("Classe prédite :", [Link](prediction))
]) print("Classe réelle :", y_test[index])

# 4. Compiler le modèle
[Link](
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)

elazami © 2025-2026 35

Vous aimerez peut-être aussi