3 Question 1 - Structure du réseau
La structure du réseau est définie dans le fichier tinycnn_cifar_init.m, dans le répertoire examples/cifar/.
Analysez ce fichier, ainsi que le tableau récapitulatif affiché lors du lancement du code pour déterminer :
— La fonction de chacune des couches du réseau
— Le rôle des différents paramètres de chaque couche
— La taille de chacune des couches (hauteur,largeur, profondeur 2)
— La manière dont la sortie (la classe) est codée
4 Question 2 - Paramètres d’apprentissage
Modifiez les paramètres fournis par défaut dans le fichier tinycnn_cifar_init.m afin d’obtenir les
meilleurs performances possibles sur la base de validation. Vous pouvez jouer sur :
—learningRate (ligne 47) : ce vecteur définit le nombre d’époques d’apprentissage (par sa lon-
gueur), et le taux d’apprentissage à chaque époque. Vous pouvez modifier les valeurs du taux d’ap-
prentissage et le nombre d’époques
—weightDecay (ligne 48) : cette valeur est utilisée pour diminuer les poids lors de chaque descente
de gradient en imposant une pénalité sur leur norme. Elle permet de conserver des poids de valeur
relativement faible et ainsi d’éviter des divergences de l’apprentissage.
—batchSize (ligne 49) : la taille des paquets de données utilisés pour calculer le gradient avant
un pas de descente de gradient. Les gradients sont moyennés sur des paquets, permettant ainsi de
réduire le bruit.
— La taille de la base de données : la fonction reduce_database(new_size) dans le répertoire
data/cifar-tinycnn permet de réduire la base de donnée CIFAR10 de 20 000 exemples à la taille
désirée. Le code téléchargé utilise par défaut une base de 5000 exemples. Vous devez sélectionner
le répertoire datacifar-tinycnn comme répertoire courant avant d’exécuter cette fonction.
Lorsque vous relancez l’apprentissage, le réseau continue d’apprendre depuis la dernière époque réa-
lisée en chargeant les derniers poids calculés. Pour repartir du début, vous pouvez effacer les fichiers
net-epoch-xx.mat dans le répertoire datacifar-tinycnn.
5 Question 3 - Approfondissement de la structure
Modifiez le réseau dans le fichier cnn_cifar_init.m pour ajouter des couches de convolution. Pro-
posez une nouvelle structure à 4 couches de convolution (le code fournit ne contient que 2 couches). De
nombreuses architectures sont possibles (nombre de caractéristiques à chaque couche, pooling ou non,
stride ou non, utilisation de couche complètement connectée ou non...). Vous devez trouver une structure
qui respecte les contraintes de taille d’entrée (images 32x32x3) et de sortie (vecteur de taille 10).
Testez les performances de votre réseau par rapport au réseau de la question précédente. Attention :
pour la première utilisation, placez vous dans le répertoire Utilisez une base de seulement 5000 exemples
pour réduire les temps de calcul. Que constatez vous en terme de performances et d’écart entre les perfor-
mances d’apprentissage et de validation ?
6 Question 4 - Comparaison avec une régression linéaire
Modifiez le réseau dans le fichier microcnn_cifar_init.m pour implémenter une simple régression
linéaire à l’aide d’une seule couche de convolution. Vous devez trouvez une structure qui respecte les
contraintes de taille d’entrée (images 32x32x3) et de sortie (vecteur de taille 10).
Testez les performances de cette méthode par rapport aux réseaux des questions précédentes. Que
constatez vous en terme de performances et d’écart entre les performances d’apprentissage et de validation ?
2. Le nombre de caractéristiques
2