[PYTHON] J'ai appris MNIST avec Caffe et j'ai essayé de le dessiner (MAC OS X El Capitan)

introduction

C'est une histoire qu'un amateur entraîne des données MNIST dans Caffe (mode CPU_only). MNIST Database est un ensemble de données de 0 à 9 caractères manuscrits créé par LeCun et al. Je n'ai pas trouvé les informations pour Mac OS 10.11, je vais donc en prendre note sous forme de mémorandum.

(1) Environnement d'exécution (2) Apprenez MNIST avec Caffe (3) PLOT de précision (4) Erreurs réellement rencontrées et comment les traiter (5) Site référencé

La version d'installation est ici.

(1) Environnement d'exécution

OS:Mac OSX El Capitan (10.11.6) CPU: Core i5 1.6GHz GPU: Intel HD Graphics 6000 1536 MB Mémoire: 8 Go

(2) Apprenez MNIST avec Caffe

En gros, je me réfère à Training LeNet on MNIST with Caffe.

■ Préparation du jeu de données

Tout d'abord, téléchargez l'ensemble de données et créez des données d'entraînement. (1ère ligne) Accédez à la hiérarchie des dossiers Caffe (2e ligne) Télécharger les données mnist (3e ligne) Créer des données d'entraînement à partir de données mnist

cd $CAFFE_ROOT
./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh

Si vous obtenez une erreur ici, il y a deux possibilités les plus probables: ・ La hiérarchie est différente ・ Il n'y a pas de wget ou gunzip

■ Définition du solveur

Faites passer la définition du solveur du mode GPU au mode CPU (car il est utilisé en mode CPU). Modifiez le fichier suivant avec un éditeur.

$CAFFE_ROOT/examples/mnist/lenet_solver.prototxt

Réécrivez en tant que solver_mode: CPU comme suit.

# solver mode: CPU or GPU
solver_mode: CPU

■ Apprentissage des ensembles de données

Ensuite, entraînez l'ensemble de données. Plus tard, j'ajouterai 2> & 1 | tee votre_nom.log pour dessiner un PLOT de précision. Peu importe si vous connaissez le nom de votre_nom.log. (On a dit qu'un fichier journal pouvait être créé dans le dossier / tmp / sans 2> & 1 | tee your_name.log, mais il n'a pas été créé dans mon propre environnement)

cd $CAFFE_ROOT
./examples/mnist/train_lenet.sh 2>&1 | tee your_name.log

Certains des résultats réels sont présentés ci-dessous. Le journal sera affiché dans le terminal et un fichier votre_nom.log sera créé dans la hiérarchie. / Examples / mnist /.


I0924 20:28:43.185619 2030800896 solver.cpp:228] Iteration 9900, loss = 0.00506415
I0924 20:28:43.185690 2030800896 solver.cpp:244]     Train net output #0: loss = 0.00506419 (* 1 = 0.00506419 loss)
I0924 20:28:43.185703 2030800896 sgd_solver.cpp:106] Iteration 9900, lr = 0.00596843
I0924 20:28:47.841295 2030800896 solver.cpp:454] Snapshotting to binary proto file examples/mnist/lenet_iter_10000.caffemodel
I0924 20:28:47.865257 2030800896 sgd_solver.cpp:273] Snapshotting solver state to binary proto file examples/mnist/lenet_iter_10000.solverstate
I0924 20:28:47.902568 2030800896 solver.cpp:317] Iteration 10000, loss = 0.00462559
I0924 20:28:47.902603 2030800896 solver.cpp:337] Iteration 10000, Testing net (#0)
I0924 20:28:51.194413 2030800896 solver.cpp:404]     Test net output #0: accuracy = 0.9909
I0924 20:28:51.194463 2030800896 solver.cpp:404]     Test net output #1: loss = 0.0286294 (* 1 = 0.0286294 loss)
sens
loss Valeur de la fonction de perte de données d'entraînement(loss is the training function)
lr Taux d'apprentissage(lr is the learning rate of that iteration)
#0: accuracy Taux de réponse correct des données de test
#1: loss Valeur de la fonction de perte de données de test(testing loss function)

(3) PLOT de précision

Fondamentalement, je me réfère à j'ai essayé de tracer les progrès de l'apprentissage de MNIST avec Caffe.

■ Préparation préalable

Puisque Gnuplot est utilisé pour l'affichage, il est nécessaire d'installer Gnuplot. Installez en vous référant à Installer Gnuplot (Mac ElCapitan).

■ Exécution de PLOT

Exécutez parse_log.sh avec votre_nom.log créé dans la formation de l'ensemble de données comme argument.

cd $CAFFE_ROOT/tools/extra
./parse_log.sh your_name.log

Les deux fichiers suivants sont créés.

your_name.log.test
your_name.log.train

Changez la partie de votre_nom dans les deux fichiers ci-dessus en mnist. (Dans le dossier $ CAFFE_ROOT / tools / extra) Exécutez ensuite la commande suivante.

gnuplot plot_log.gnuplot.example 

L'image dessinée (axe horizontal: "Itérations d'entraînement", axe vertical: "Perte d'entraînement") est enregistrée.

your_chart_name.png

(4) Erreurs réellement rencontrées et comment les traiter

■ Erreur causée par l’oubli de basculer le mode solveur sur CPU

·Message d'erreur


I0922 20:46:13.136147 2030800896 caffe.cpp:217] Using GPUs 0
F0922 20:46:13.138036 2030800896 common.cpp:66] Cannot use GPU in CPU-only Caffe: check mode.
*** Check failure stack trace: ***
    @        0x104c87636  google::LogMessage::Fail()
    @        0x104c86d2d  google::LogMessage::SendToLog()
    @        0x104c87295  google::LogMessage::Flush()
    @        0x104c8a5e7  google::LogMessageFatal::~LogMessageFatal()
    @        0x104c87923  google::LogMessageFatal::~LogMessageFatal()
    @        0x1049cba06  caffe::Caffe::SetDevice()
    @        0x10493feb0  train()
    @        0x10494274a  main
    @     0x7fff968535ad  start
    @                0x3  (unknown)
./examples/mnist/train_lenet.sh: line 4: 62566 Abort trap: 6           
./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt $@

·Solution de contournement

Editez lenet_solver.prototxt pour basculer le mode sur CPU.

# solver mode: CPU or GPU
solver_mode: CPU

(5) Site référencé

Officiel Caffe | Formation LeNet sur MNIST avec Caffe (20) Reconnaissance automatique MNIST avec Caffe (1) [De l'introduction de "Caffe" qui permet l'apprentissage en profondeur sans GPU à l'apprentissage, aux tests et aux données auto-créées](http://sssslide.com/speakerdeck.com/suneo3476/gpuwu-sidedeipuraningudekiru-caffe-dao-ru-karaxue-xi-tesutodetazi -zuo) J'ai essayé de tracer les progrès de l'apprentissage du MNIST avec Caffe Caffe Logging and Loss Plotting Where to find log files? How can I get the figures like this Installer Gnuplot (Mac ElCapitan)


Recommended Posts

J'ai appris MNIST avec Caffe et j'ai essayé de le dessiner (MAC OS X El Capitan)
J'ai essayé de créer un environnement d'apprentissage automatique avec Python (Mac OS X)
J'ai installé Caffe pour pouvoir faire du Deep Learning avec MAC OS X El Capitan
J'ai essayé d'afficher l'interface graphique sur Mac avec le système X Window
Installez lp_solve sur Mac OSX et appelez-le avec python.
J'ai essayé de déplacer GAN (mnist) avec keras
J'ai essayé d'implémenter et d'apprendre DCGAN avec PyTorch
Comment installer Caffe sur OS X avec macports
J'ai essayé de lire et d'enregistrer automatiquement avec VOICEROID2
J'ai essayé d'implémenter Grad-CAM avec keras et tensorflow
Nombre de mots avec Apache Spark et python (Mac OS X)
Utilisation du SDK NAOqi 2.4.2 Python avec Mac OS X El Capitan
J'ai créé un serveur avec socket Python et ssl et j'ai essayé d'y accéder depuis le navigateur
J'ai essayé de classer MNIST par GNN (avec PyTorch géométrique)
Créer un environnement python avec pyenv (OS X El Capitan 10.11.3)
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
Comment installer Theano sur Mac OS X avec homebrew
J'ai essayé de visualiser les signets volant vers Slack avec Doc2Vec et PCA
Un mémorandum lors de l'acquisition automatique avec du sélénium
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de créer des taureaux et des vaches avec un programme shell
J'ai essayé de détecter facilement les points de repère du visage avec python et dlib
Étapes pour mettre Caffe dans Mac OS X 10.10 en mode CPU
J'ai essayé d'exprimer de la tristesse et de la joie face au problème du mariage stable.
Créez un environnement avec pyenv, pyenv-virtualenv, jupyter sur OS X El Capitan
J'ai écrit un diagramme de configuration du système avec des diagrammes sur Docker
J'ai essayé de convertir la chaîne datetime <-> avec tzinfo en utilisant strftime () et strptime ()
J'ai essayé d'apprendre l'angle du péché et du cos avec le chainer
J'ai essayé de créer un environnement de développement Mac Python avec pythonz + direnv
[Zaif] J'ai essayé de faciliter le commerce de devises virtuelles avec Python
J'ai essayé de contrôler la bande passante et le délai du réseau avec la commande tc
J'ai essayé d'implémenter Autoencoder avec TensorFlow
Livre Wrangle x Python Je l'ai essayé [2]
Installez matplotlib sur OS X El Capitan
J'ai essayé de visualiser AutoEncoder avec TensorFlow
J'ai installé DSX Desktop et l'ai essayé
J'ai essayé de commencer avec Hy
J'ai essayé d'implémenter CVAE avec PyTorch
Livre Wrangle x Python Je l'ai essayé [1]
J'ai essayé de résoudre TSP avec QAOA
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
Lorsque j'ai essayé de changer le mot de passe root avec ansible, je ne pouvais pas y accéder.
J'ai essayé d'utiliser Java avec Termux en utilisant Termux Arch, mais cela n'a pas fonctionné
Quand j'ai essayé de créer un VPC avec AWS CDK mais que je n'ai pas pu le faire
Quand j'ai essayé de créer un environnement virtuel avec Python, cela n'a pas fonctionné
Je veux écrire un élément dans un fichier avec numpy et le vérifier.
J'ai fait un modèle de classification d'images et essayé de le déplacer sur mobile
[Introduction à AWS] J'ai essayé de porter une application de conversation et de jouer avec text2speech @ AWS ♪
Docker x Visualization ne fonctionnait pas et j'en étais accro, alors je l'ai résumé!
Création d'un environnement R avec Jupyter (anciennement notebook IPython) (sous OS X El Capitan 10.11.3)
J'ai essayé de créer une API de reconnaissance d'image simple avec Fast API et Tensorflow
J'ai essayé d'utiliser Twitter Scraper avec AWS Lambda et cela n'a pas fonctionné.
Exécutez le wrapper Python de l'API Qiita v2 dans un environnement Python 3 (Mac OS X 10.11 (El Capitan))
J'ai essayé de prédire l'année prochaine avec l'IA