Table of Contents

HMUL8R6B - Projet "deep learning"

Nous allons utiliser l'outil PyTorch. Torch est un ensemble de logiciels pour faire du deep learning. Pytorch est principalement une interface python pour torch.

Installations

Installation de l'installateur Miniconda. Choisir python 3.6 et 64 bits.

Installation de PyTorch :

$ conda install pytorch torchvision -c pytorch

Version istallée sur le compte quenotg, inclure la ligne suivante dans votre .bashrc (ou l'entrer dans votre terminal) :

export PATH="/home/Public/quenotg/miniconda3/bin:$PATH"

Pour un effet immédiat, exécuter la commande :

source ~/.bashrc

Installation de matplotlib :

$ python -mpip install -U pip
$ python -mpip install -U matplotlib

Tutoriels

Tutoriel Python
Tutoriel débutants PyTorch

Pour ne pas télécharger inutilement les données CIFAR-10, faire le lien symbolique suivant :

ln -s /home/Public/quenotg/data .

Dans la fonction imshow(img) dans le tutoriel, il faut ajouter l'instruction plt.show, soit :

def imshow(img):
    img = img / 2 + 0.5     # unnormalize
    npimg = img.numpy()
    plt.imshow(np.transpose(npimg, (1, 2, 0)))
    plt.show()

Attention, si on lance python en batch, ces affichages bloquent la suite de l'exécution tant qu'ils ne sont pas fermés.

Vous pouvez aussi mettre num_workers=0 dans la définition de trainloader et de testloader, ça évite des message d'erreurs en sortie de programme.

TP

Faire le tutoriel avec le réseau proposé jusqu'à l'entraînement pendant deux itérations et l'évaluation sur les données de test.

Modifier le programme pour faire l'évaluation après chaque époque et aussi avant la première.

Modifier le réseau de manière cohérente : commencer par modifier la taille d'une ou plusieurs couche, plus de cartes (filtres ou plans) dans une couche de convolution ou plus de neurones dans une couche complètement connectée.

Essayer ensuite d'insérer une couche supplémentaire soit de convolution, soit complètement connectée, soit les deux.

Dans tous les cas, rester sur deux itérations seulement pour limiter le temps d'exécution et comparer les performances des différentes variantes. Dans un ou deux cas, laisser tourner l'entraînement jusqu'à ce que la performance jusqu'à ce que la fonction de coût (running loss) ne décroisse plus ou plus significativement. Comparer la performance finale du réseau du tutoriel et d'une de vos variantes.

Essayer ensuite des variantes de la fonction de coût (loss), de l'optimiseur et/ou de la fonction d'activation.

Rendu

Vous rendrez en plus du résultat sur la première partie, le source Python de votre meilleur réseau sur la tâche CIFAR10 avec ses paramètres d'entraînement, et un graphique (ou une table) indiquant le taux d'erreur (ou de bonnes réponses) après 0, 1, 2, 3, 4 et 5 époques d'entraînement. Si vous n'avez pas pu tout faire, indiquez juse jusqu'où vous êtes arrivés.