[PYTHON] Lernen Sie mit Caffe, handschriftliche Zahlen (MNIST) zu erkennen

Was ist Caffe?

Es ist ein Open-Source-Framework für Deep Learning, das in letzter Zeit ein heißes Thema war. Die offizielle Homepage kann mit hier, C ++, Python und MATLAB verwendet werden, sodass Sie die auswählen können, in der Sie gut sind. Sie können eine Demo der Bildklassifizierung von hier sehen. Wenn Sie also interessiert sind, versuchen Sie es bitte.

Die Einführungsmethode von Caffe ist in diesem Artikel zusammengefasst. Wenn Sie möchten, lesen Sie sie bitte.

Was ist MNIST (Mixed National Institute of Standards and Technology)?

MNIST ist eine handgeschriebene numerische Bilddatenbank, die aus 60.000 Trainingsmustern und 10000 Testmustern mit 28 x 28 Pixel besteht. Es wird häufig im Bereich des maschinellen Lernens und des Tiefenlernens als Benchmark für neuronale Netze verwendet.

Caffe hat ein Skript, das das Erlernen von MNIST erleichtert, also habe ich es versucht!

Lerne MNIST mit Caffe

Wechseln Sie zunächst in das Stammverzeichnis von Caffe. Führen Sie nach dem Verschieben das in Caffe vorbereitete Skript im Voraus aus, um den Satz von MNIST-Daten herunterzuladen. Für diese Ausführung sind jedoch wget und gunzip erforderlich. Wenn Sie es nicht haben, legen Sie es bitte in Homebrew ab.

cd /path/to/caffe
./data/mnist/get_mnist.sh

Da Caffe beim Lernen von Bildern im LevelDB- oder LMDB-Format gelesen werden muss, werden die oben heruntergeladenen Daten mit dem folgenden Skript in LMDB konvertiert.

./examples/mnist/create_mnist.sh

Dann sollten Sie . / Example / mnist / mnist_train_lmdb und. / Example / mnist / mnist_test_lmdb erstellt haben. Der Zug wird zum Training verwendet und der Test wird zur Bewertung des Lernens verwendet.

Wenn Sie Caffe vor dem Training auf CPU_ONLY ausführen, schreiben Sie solver_mode: GPU in. / Example / mnist / lenet_solver.prototxt in solver_mode: CPU um. Wenn Sie dies nicht tun, erhalten Sie einen Fehler.

Schließlich werden wir anhand der vorbereiteten Daten lernen, die auch ein Skript enthalten. Führen Sie es einfach aus.

./examples/mnist/train_lenet.sh

Dann werden "lenet_train_test.prototxt" und "lent_solver.prototxt" gelesen und der Aufbau und das Lernen des Schichtnetzwerks beginnen.

Sie sollten während des Lernens Verlust und Genauigkeit feststellen. Verlust bedeutet einen Wert, der abnimmt, wenn die Anzahl der Übereinstimmungen zwischen der Vorhersage und der richtigen Antwort zunimmt, und Genauigkeit bedeutet die richtige Antwortrate. Wenn Sie sich also den Übergang dieser Werte ansehen, können Sie sehen, wie das Lernen voranschreitet.

I0704 solver.cpp:343]     Test net output #0: accuracy = 0.0912
I0704 solver.cpp:343]     Test net output #1: loss = 2.44682 (* 1 = 2.44682 loss)

Am Ende des Trainings werden die Testläufe und die endgültige Bewertung des Netzwerks angezeigt und ".examples / mnist / lenet_iter_10000.caffemodel" als trainiertes Modell ausgegeben. Durch Lesen dieses trainierten Modells kann das Netzwerk in dem Zustand nach dem Lernen der MNIST-Erkennung jederzeit reproduziert werden, sodass das trainierte Netzwerk in tatsächliche Produkte integriert werden kann.

Dies ist das Ende des MNIST-Erkennungslernens. Dieses Mal habe ich den ursprünglich vorbereiteten Prototxt gelesen und gelernt, daher halte ich es nicht für sinnvoll, die Parameter zu optimieren, aber wiederhole den Test, während ich den Wert des Inhalts von "lenet_solver.prototxt" ändere und die einzelnen Daten vergleiche. Es macht Spaß, also versuchen Sie es bitte.

Wenn Sie eine Idee haben, wie Sie die Modellausgabe im Training verwenden und wie Sie den Trainingsfortschritt in einem Diagramm anzeigen, werde ich ihn zusammenfassen.

Wenn Sie Fehler oder Meinungen haben, lassen Sie es uns bitte wissen.

Recommended Posts

Lernen Sie mit Caffe, handschriftliche Zahlen (MNIST) zu erkennen
Spielen Sie handschriftliche Zahlen mit Python Part 1
Lernen Sie mit Chainer, monochrome Bilder einzufärben
Spielen Sie handschriftliche Zahlen mit Python Teil 2 (identifizieren)
Vorbereitung auf das Erlernen technischer Indikatoren mit TFlearn
[Computer Vision] Epipolare Geometrie mit Katzen gelernt
Öffnen Sie AI Gym, um mit PD-gesteuertem Cart Pole zu lernen
Ich habe versucht, mit TF Learn die logische Operation zu lernen
Ich habe versucht, GAN (mnist) mit Keras zu bewegen
Skript zum Twittern mit Vielfachen von 3 und Zahlen mit 3 !!
AWS-Schrittfunktionen zum Lernen anhand eines Beispiels
Wie man Kaldi mit JUST Corpus trainiert
MNIST-Bildklassifizierung (handschriftliche Nummer) mit mehrschichtigem Perzeptron
Wie man Zufallszahlen mit dem Zufallsmodul von NumPy macht
Ich habe versucht, die Sündenfunktion mit Chainer zu trainieren
Prozedur zum Laden von MNIST mit Python und zur Ausgabe an png
Ich habe versucht, DCGAN mit PyTorch zu implementieren und zu lernen
Klassifizieren Sie Mnist-Zahlen nach Keras, ohne dass der Lehrer etwas lernt [Auto Encoder Edition]
So installieren Sie caffe unter OS X mit Macports
Site-Zusammenfassung zum Erlernen des maschinellen Lernens mit englischen Videos
Wie man strukturiertes SVM von ChainCRF mit PyStruct lernt
Konvertiert Zahlen mit Kommas und Dreiecken in numerische Typen.
[How to!] Lerne und spiele Super Mario mit Tensorflow !!
MVC-Model Edition, um nur mit Voreingenommenheit von 0 zu lernen
Ich habe MNIST mit Caffe gelernt und versucht, es zu zeichnen (MAC OS X El Capitan)