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

Compte Rendu ML

Ce compte-rendu présente la mise en œuvre d'un réseau de neurones convolutif pour la classification des chiffres manuscrits du dataset MNIST, en détaillant les étapes de prétraitement, définition du modèle, entraînement et évaluation. Des techniques d'optimisation avancées, telles que l'augmentation des données et l'utilisation de callbacks, ont été appliquées pour améliorer les performances du modèle. En conclusion, le TP a démontré l'efficacité d'un pipeline complet de classification d'images.

Transféré par

hnainiamedamine28
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 vues6 pages

Compte Rendu ML

Ce compte-rendu présente la mise en œuvre d'un réseau de neurones convolutif pour la classification des chiffres manuscrits du dataset MNIST, en détaillant les étapes de prétraitement, définition du modèle, entraînement et évaluation. Des techniques d'optimisation avancées, telles que l'augmentation des données et l'utilisation de callbacks, ont été appliquées pour améliorer les performances du modèle. En conclusion, le TP a démontré l'efficacité d'un pipeline complet de classification d'images.

Transféré par

hnainiamedamine28
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

Compte-rendu TP Machine Learning :

Classification des chiffres MNIST


Hnainia Mohamed Amine GEA 3 B
28 Novembre 2025

1 Introduction
Ce TP présente la mise en œuvre d’un réseau de neurones convolutif pour
la classification des chiffres manuscrits du dataset MNIST. Le travail est divisé
en plusieurs étapes progressives.

2 Exploration des données


2.1 Code correspondant
1 import tensorflow as tf
2 import matplotlib . pyplot as plt
3
4 ( X_train , y_train ) , ( X_test , y_test ) = tf . keras . datasets . mnist .
load_data ()
5
6 plt . figure ( figsize =(10 , 5) )
7 for i in range (10) :
8 plt . subplot (2 , 5 , i +1)
9 plt . imshow ( X_train [ i ] , cmap = ’ gray ’)
10 plt . title ( f " Label : { y_train [ i ]} " )
11 plt . axis ( ’ off ’)
12 plt . show ()
13 print ( " Dimensions de X_train : " , X_train . shape )
14 print ( " Dimensions de y_train : " , y_train . shape )
15 print ( " Dimensions de X_test : " , X_test . shape )
16 print ( " Dimensions de y_test : " , y_test . shape )

Listing 1 – Chargement et visualisation des données

2.2 Discussion
Cette première étape permet de charger le dataset MNIST et de visualiser
les 10 premières images d’entraı̂nement avec leurs labels correspondants.

1
3 Normalisation et redimensionnement
3.1 Code correspondant
1 X_train = X_train / 255.0
2 X_test = X_test / 255.0
3 X_train = X_train . reshape ( X_train . shape [0] , 28 , 28 , 1)
4 X_test = X_test . reshape ( X_test . shape [0] , 28 , 28 , 1)
5 print ( " Dimensions de X_train a p r s r e d i m e n s i o n n e m e n t : " , X_train .
shape )
6 print ( " Dimensions de X_test a p r s r e d i m e n s i o n n e m e n t : " , X_test .
shape )

Listing 2 – Prétraitement des données

3.2 Discussion
La normalisation des valeurs de pixels dans l’intervalle [0,1] améliore la
convergence de l’algorithme. Le redimensionnement ajoute une dimension de
canal pour les images en niveaux de gris.

4 Définition du modèle
4.1 Code correspondant
1 from tensorflow . keras import layers , models
2 model = models . Sequential ([
3 layers . Conv2D (32 , kernel_size =(3 , 3) , activation = ’ relu ’ ,
input_shape =(28 , 28 , 1) ) ,
4 layers . MaxPooling2D ( pool_size =(2 , 2) ) ,
5 layers . Conv2D (64 , kernel_size =(3 , 3) , activation = ’ relu ’) ,
6 layers . MaxPooling2D ( pool_size =(2 , 2) ) ,
7 layers . Flatten () ,
8 layers . Dense (128 , activation = ’ relu ’) ,
9 layers . Dense (10 , activation = ’ softmax ’)
10 ])
11
12 model . summary ()

Listing 3 – Architecture du modèle CNN

4.2 Discussion
Architecture CNN classique avec deux couches convolutionnelles suivies de
pooling, une couche d’aplatissement et deux couches denses. La fonction d’ac-
tivation softmax en sortie permet la classification multi-classes.

2
5 Compilation et entraı̂nement du modèle
5.1 Code correspondant
1 model . compile ( optimizer = ’ adam ’ ,
2 loss = ’ s p a r s e _ c a t e g o r i c a l _ c r o s s e n t r o p y ’ ,
3 metrics =[ ’ accuracy ’ ])
4
5 history = model . fit ( X_train , y_train , epochs =5 , v a li da ti o n_ da ta =(
X_test , y_test ) )

Listing 4 – Compilation et entraı̂nement

5.2 Discussion
Utilisation de l’optimiseur Adam et de la loss sparse categorical crossentropy,
appropriée pour les labels entiers. L’entraı̂nement se fait sur 5 époques avec
validation sur les données de test.

6 Évaluation du modèle
6.1 Code correspondant
1 test_loss , test_acc = model . evaluate ( X_test , y_test , verbose =2)
2 print ( f " P r c i s i o n sur l ’ ensemble de test : { test_acc * 100:.2 f }% " )
3 import matplotlib . pyplot as plt
4
5 plt . plot ( history . history [ ’ accuracy ’] , label = ’ P r c i s i o n sur l \ ’
ensemble d \ ’ e n t r a n e m e n t ’)
6 plt . plot ( history . history [ ’ val_accuracy ’] , label = ’ P r c i s i o n sur l \ ’
ensemble de validation ’)
7 plt . xlabel ( ’ poques ’)
8 plt . ylabel ( ’ P r c i s i o n ’)
9 plt . legend ( loc = ’ lower right ’)
10 plt . title ( ’ P r c i s i o n d \ ’ e n t r a n e m e n t et de validation ’)
11 plt . show ()

Listing 5 – Évaluation et visualisation

6.2 Discussion
Évaluation de la performance du modèle sur l’ensemble de test et visua-
lisation des courbes d’apprentissage pour analyser la convergence et détecter
d’éventuels surapprentissages.

7 Prédiction et Visualisation
7.1 Code correspondant

3
1 import numpy as np
2 predictions = model . predict ( X_train )
3 plt . figure ( figsize =(10 , 5) )
4 for i in range (10) :
5 plt . subplot (2 , 5 , i +1)
6 plt . imshow ( X_test [ i ]. reshape (28 , 28) , cmap = ’ gray ’)
7 plt . title ( f " P r d i t : { np . argmax ( predictions [ i ]) } | Vrai : {
y_test [ i ]} " )
8 plt . axis ( ’ off ’)
9 plt . show ()

Listing 6 – Prédictions sur de nouvelles images

7.2 Discussion
Visualisation des prédictions du modèle sur 10 images de test, permettant
de vérifier qualitativement les performances.

8 Améliorations avancées
8.1 Augmentation des données
1 datagen = I m a g e D a t a G e n e r a t o r (
2 rot ation_r ange =10 , # Rotation jusqu ’ 10 d e g r s
3 zoom_range =0.1 , # Zoom jusqu ’ 10%
4 w i d t h _ s h i f t _ r a n g e =0.1 , # D p l a c e m e n t horizontal jusqu ’ 10%
5 h e i g h t _ s h i f t _ r a n g e =0.1 , # D p l a c e m e n t vertical jusqu ’ 10%
6 shear_range =0.1 # Cisaillement jusqu ’ 10%
7 )
8 tr ai n_ g en er at o r = datagen . flow ( X_train , y_train , batch_size =32)

Listing 7 – Data Augmentation

8.2 Modèle amélioré


1 def c r e a t e _ i m p r o v e d _ m o d e l () :
2 model = models . Sequential ([
3 layers . Conv2D (32 , (3 , 3) , activation = ’ relu ’ , input_shape
=(28 , 28 , 1) ) ,
4 layers . B a t c h N o r m a l i z a t i o n () ,
5 layers . Conv2D (32 , (3 , 3) , activation = ’ relu ’) ,
6 layers . MaxPooling2D ((2 , 2) ) ,
7 layers . Dropout (0.25) ,
8
9 layers . Conv2D (64 , (3 , 3) , activation = ’ relu ’) ,
10 layers . B a t c h N o r m a l i z a t i o n () ,
11 layers . Conv2D (64 , (3 , 3) , activation = ’ relu ’) ,
12 layers . MaxPooling2D ((2 , 2) ) ,
13 layers . Dropout (0.25) ,
14

4
15 layers . Conv2D (128 , (3 , 3) , activation = ’ relu ’) ,
16 layers . B a t c h N o r m a l i z a t i o n () ,
17 layers . Dropout (0.25) ,
18
19 layers . Flatten () ,
20 layers . Dense (256 , activation = ’ relu ’) ,
21 layers . B a t c h N o r m a l i z a t i o n () ,
22 layers . Dropout (0.5) ,
23 layers . Dense (128 , activation = ’ relu ’) ,
24 layers . Dropout (0.5) ,
25 layers . Dense (10 , activation = ’ softmax ’)
26 ])
27 return model

Listing 8 – Architecture avancée

8.3 Optimisation et callbacks


1 c u s t o m _ o p t i m i ze r = Adam ( learning_rate =0.001)
2
3 reduce_lr = R e d u c e L R O n P l a t e a u (
4 monitor = ’ val_loss ’ ,
5 factor =0.2 ,
6 patience =2 ,
7 min_lr =0.0001 ,
8 verbose =1
9 )
10
11 earl y_stopp ing = EarlyStopping (
12 monitor = ’ val_loss ’ ,
13 patience =5 ,
14 r e s t o r e _ b e s t _ w e i g h t s = True ,
15 verbose =1
16 )
17
18 impr oved_mo del . compile (
19 optimizer = custom_optimizer ,
20 loss = ’ s p a r s e _ c a t e g o r i c a l _ c r o s s e n t r o p y ’ ,
21 metrics =[ ’ accuracy ’]
22 )

Listing 9 – Techniques d’optimisation

8.4 Entraı̂nement amélioré


1 h i s t o r y _ i m p r o ve d = improv ed_mode l . fit (
2 datagen . flow ( X_train , y_train , batch_size =32) ,
3 epochs =10 ,
4 va li d at io n_ d at a =( X_test , y_test ) ,
5 callbacks =[ reduce_lr , ear ly_stop ping ] ,
6 verbose =1
7 )

Listing 10 – Entraı̂nement avec techniques avancées

5
8.5 Analyse des résultats
1 test_loss_improved , t e s t _ a c c _ i m p r o v e d = improve d_model . evaluate (
X_test , y_test , verbose =2)
2 print ( f " P r c i s i o n du m o d l e a m l i o r sur l ’ ensemble de test : {
t e s t _ a c c _ i m p r o v e d * 100:.2 f }% " )
3
4 final_epoch = len ( h i s t o ry _ i m p r o v e d . history [ ’ accuracy ’ ])
5 print ( f " A r r t de l ’ e n t r a n e m e n t a p r s { final_epoch } poques " )
6 print ( f " P r c i s i o n finale - E n t r a n e m e n t : { h i s t o r y _ i mp r o v e d .
history [ ’ accuracy ’][ -1]:.4 f } " )
7 print ( f " P r c i s i o n finale - Validation : { h i st o r y _ i m p r o v e d . history [ ’
val_accuracy ’][ -1]:.4 f } " )

Listing 11 – Évaluation détaillée

9 Conclusion
Ce TP a permis de mettre en œuvre un pipeline complet de classification
d’images, depuis l’exploration des données jusqu’à l’optimisation avancée d’un
modèle CNN. Les techniques d’amélioration ont montré leur efficacité pour aug-
menter les performances et la robustesse du modèle.

Vous aimerez peut-être aussi