====== 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 [[https://conda.io/miniconda.html|Miniconda]]. Choisir python 3.6 et 64 bits. Installation de [[http://pytorch.org/|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 [[https://matplotlib.org/|matplotlib]] : $ python -mpip install -U pip $ python -mpip install -U matplotlib ===== Tutoriels ===== [[https://docs.python.org/3.5/tutorial/|Tutoriel Python]] \\ [[http://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html|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.