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.
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!
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