[PYTHON] Ich habe das MNIST-Tutorial von tensorflow für Anfänger ausprobiert.

Google hat ein Tool für maschinelles Lernen "TensorFlow" veröffentlicht, daher habe ich sofort ein Tutorial ausprobiert.

Installieren Sie wie folgt.

$ pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl

Bisher scheint es nur Python2 zu unterstützen, und als ich versuchte, es auch in Python3 zu installieren, schlug es fehl. Abhängigkeiten wie numpy werden ebenfalls automatisch installiert.

Unten habe ich versucht, es zu implementieren, während ich auf der offiziellen Website geschrieben habe, was in "MNIST für ML-Anfänger" steht. (Beachten Sie, dass input_data keine Funktion von tensorflow ist, aber die in hier ist input_data. Muss als .py gespeichert werden.)

# -*- coding : utf-8 -*-

import tensorflow as tf
import input_data

#mnist Datenerfassung)
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

#Definieren Sie einen Platzhalter für Eingabeinformationen.
# shape(2. Argument)Wenn für die Dimension von Keine angegeben ist, kann eine beliebige Anzahl von Dimensionen beliebiger Länge unterstützt werden.
x = tf.placeholder("float", [None, 784])

#Definieren Sie eine Variable, die Gewichte und Verzerrungen enthält.
#Variable ist eine Variable, deren Wert durch Operation geändert werden kann.
W = tf.Variable(tf.zeros([784, 10])) #Gewicht 784 Nimmt eine dimensionale Eingabe auf und gibt eine 10-dimensionale Ausgabe zurück
b = tf.Variable(tf.zeros([10])) #Vorspannung für 10-dimensionale Ausgabe

#Definieren Sie ein neuronales Netzmodell.
#Matrixprodukt aus Eingabe x und Gewicht W.(tf.matmul)Die Vorspannung b wird zur Ausgabe von addiert, und die endgültige Ausgabe wird durch Softmax bestimmt.
y = tf.nn.softmax(tf.matmul(x, W) + b)

#Dies ist das Ende der Definition des neuronalen Netzmodells.
#Das Folgende ist die Durchführung von Schulungen und Evaluierungen
# (In diesem Beispiel lernen wir durch Auswertung mit Kreuzentropie.)

#Lehrerdaten(Richtige Antwort)Definieren Sie einen Platzhalter zum Halten.
y_ = tf.placeholder("float", [None, 10])

#Definieren Sie die Formel zur Berechnung der Kreuzentropie.
#Lehrerdaten y_Und die Logarithmus der Ausgabe y aus dem Modell, und berechnen Sie die Gesamtsumme
cross_entropy = -tf.reduce_sum(y_ * tf.log(y))

#Definieren Sie, wie das Modell bei jedem Schritt aktualisiert werden soll.
#0 für jeden Schritt.Minimieren Sie die Kreuzentropie mit einer Aktualisierungsrate von 01.
# (Die Fehlerrückausbreitungsmethode wird zum Erlernen des neuronalen Netzes verwendet, dies scheint jedoch anhand des Modells beurteilt zu werden.)
# (Hier, y= tf.nn.softmax(...)Daher scheint es, dass das Fehlerrückausbreitungsverfahren zum Aktualisieren des neuronalen Netzes angewendet wird.)
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)

#Bereiten Sie die Initialisierung aller Variablen vor.
init = tf.initialize_all_variables()

#Definieren Sie eine Sitzung und initialisieren Sie alle Variablen.
sess = tf.Session()
sess.run(init)

#Trainiere
#Übergeben Sie die wichtigsten Daten zur Schulung und zum Training an die Sitzung_Aktualisieren Sie das Modell gemäß der Definition von Schritt.
for i in range(1000):
	batch_xs, batch_ys = mnist.train.next_batch(100)
	sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

#Definieren Sie eine Bewertungsformel für die Leistungsbewertung.
#Modellausgabe y und Lehrerdaten y für Eingabedaten_Überprüfen Sie, ob sie übereinstimmen.
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))

#Es ist definiert, dass die endgültige Leistungsbewertung durch den Durchschnittswert bestimmt wird.
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))

#Bewerten Sie die Leistung anhand der Testdaten und ihrer Etiketten.
print sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels})

Was ich über die Implementierung dachte, war großartig als Werkzeug für maschinelles Lernen, aber ich fand es sehr gut als Werkzeug für die numerische Analyse. Eindruck, dass die Matrixberechnung einfach definiert werden kann und die Berechnungsgeschwindigkeit schnell ist. Die Implementierung der Lernmaschine ist im Vergleich zu anderen Bibliotheken ziemlich einfach, aber dieses Tutorial allein enthält viele Black Boxes, was mich ein wenig beunruhigt hat. In einigen offiziellen Tutorials geht es um tiefes Lernen, daher möchte ich das auch versuchen.

Recommended Posts

Ich habe das MNIST-Tutorial von tensorflow für Anfänger ausprobiert.
TensorFlow Tutorial Ich habe MNIST 3rd ausprobiert
Ich habe das TensorFlow-Tutorial (MNIST für Anfänger) zur Cloud9-Klassifizierung handgeschriebener Bilder ausprobiert.
Durchführen des TensorFlow MNIST für ML-Anfänger-Tutorials
Ich habe versucht, das TensorFlow-Tutorial mit Kommentaren auszuführen (_TensorFlow_2_0_Einführung für Anfänger).
[Erklärung für Anfänger] TensorFlow-Tutorial MNIST (für Anfänger)
Ich habe das TensorFlow-Tutorial als erstes ausprobiert
Ich habe das 2. TensorFlow-Tutorial ausprobiert
TensorFlow Tutorial MNIST Für ML-Anfänger
TensorFlow Tutorial -MNIST Für ML-Anfänger
[Für Anfänger] Ich habe versucht, die Tensorflow-Objekterkennungs-API zu verwenden
[Erklärung für Anfänger] TensorFlow-Tutorial Deep MNIST
Ich habe zum ersten Mal Tensorflow ausprobiert
Ich habe das TensorFlow-Tutorial mit Kommentaren ausgeführt (Textklassifizierung von Filmkritiken).
TensorFlow Tutorial Ich habe CNN 4th ausprobiert
Ich habe versucht, den für TensorFlow geschriebenen Code nach Theano zu portieren
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
[Übersetzen Sie das TensorFlow-Tutorial grob ins Japanische] 1. MNIST für ML-Anfänger
Ich habe versucht, das CNN-Modell von TensorFlow mit TF-Slim umzugestalten
Ich habe den asynchronen Server von Django 3.0 ausprobiert
Ergänzende Hinweise zu TensorFlow MNIST für ML-Anfänger
Ich habe versucht, das Gesichtsbild mit sparse_image_warp von TensorFlow Addons zu transformieren
Ich habe die Pivot-Table-Funktion von Pandas ausprobiert
Ich habe versucht, die Wetterkarte einer Clusteranalyse zu unterziehen
vprof - Ich habe versucht, den Profiler für Python zu verwenden
Ich habe zum ersten Mal versucht, Python zu programmieren.
Ich habe versucht, die Trapezform des Bildes zu korrigieren
Ich habe Mind Meld zum ersten Mal ausprobiert
Ich habe versucht, den Bildfilter von OpenCV zu verwenden
Ich habe versucht, die Texte von Hinatazaka 46 zu vektorisieren!
Ich habe versucht, TensorFlow auszuführen
Ich habe versucht, die Einstellungen für verschiedene Datenbanken von Django (MySQL, PostgreSQL) zusammenzufassen.
Visualisierung des Zündzustands der verborgenen Schicht des Modells, die im TensorFlow MNIST-Lernprogramm gelernt wurde
Ich habe versucht, Objekte mit YOLO v3 (TensorFlow 2.1) auf der GPU von Windows zu erkennen!
Ich habe die Größenänderung von TensorFlow nicht verstanden und sie daher visuell zusammengefasst.
Ich habe versucht, die Gesichtsverdeckungsarbeit des Koordinationsbildes für das Tragen zu automatisieren
[Übersetzung] NumPy Official Tutorial "NumPy: die absoluten Grundlagen für Anfänger"
Ich habe Python zum ersten Mal auf dem Mac ausprobiert.
Ich habe versucht, die Grundform von GPLVM zusammenzufassen
Ich habe Python zum ersten Mal mit Heroku ausprobiert
Ich habe versucht, die API von Sakenowa Data Project zu verwenden
Ich habe versucht, die Spacha-Informationen von VTuber zu visualisieren
Ich habe versucht, den negativen Teil von Meros zu löschen
Ich habe versucht, die Werbung für die Raubkopien-Website zu kratzen
[Für Anfänger] Quantifizieren Sie die Ähnlichkeit von Sätzen mit TF-IDF
AI Gaming Ich habe es zum ersten Mal versucht
Ich habe die einfachste Methode zur Klassifizierung von Dokumenten mit mehreren Etiketten ausprobiert
Ich habe versucht, die Stimmen der Sprecher zu klassifizieren
Ich habe nach dem Inhalt von CloudWatch Logs Agent gesucht
Ich habe versucht, den Beispielcode des Ansible-Moduls auszuführen
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe das TensorFlow-Tutorial mit Kommentaren ausgeführt (erstes neuronales Netzwerk: Beginn des Klassifizierungsproblems)
Ich habe die Changefinder-Bibliothek ausprobiert!
Übersicht über Docker (für Anfänger)
Ich habe versucht, Magenta / TensorFlow zu verwenden
Ich habe versucht, die Entropie des Bildes mit Python zu finden