Ich habe das TensorFlow-Anfänger-Tutorial MNIST für ML-Anfänger ausgeführt. Ich bin Absolvent der Freien Künste und ** Tensor Flow zum ersten Mal ** und im Gegenteil ** Deep Learning zum ersten Mal **. Außerdem ** habe ich kaum maschinelles Lernen gemacht **. Informationen zu mathematischen Kenntnissen finden Sie im Artikel Wie man Mathematik für Absolventen der Freien Künste studiert, um Statistik und maschinelles Lernen zu verstehen. Es wird aus der Perspektive von Anfängern erklärt. Es gibt viele Teile, denen es an Genauigkeit mangelt, aber ich lege Wert auf Klarheit.
- TensorFlow unter Windows Easy für Python-Anfänger installieren
- [Erklärung für Anfänger] Grundlegende Syntax und Konzept von TensorFlow
- TensorFlow API-Memo
- [Einführung in TensorBoard] Visualisieren Sie die TensorFlow-Verarbeitung, um das Verständnis zu vertiefen
- TensorFlow Tutorial MNIST (für Anfänger) mit TensorBoard visualisiert
- [Einführung in TensorBoard: image] TensorFlow Visualisieren Sie die Bildverarbeitung, um das Verständnis zu vertiefen
- [Einführung in TensorBoard: Projector] Lassen Sie die TensorFlow-Verarbeitung cool aussehen
- [Erklärung für Anfänger] TensorFlow-Tutorial Deep MNIST
- Yuki Kashiwagis Gesichtszüge zum Verständnis von TensorFlow [Teil 1]
Das Umrissdiagramm ist wie folgt.
MNIST-Datenbank (modifizierte Datenbank des Nationalen Instituts für Standards und Technologie) ist ein Satz handgeschriebener numerischer Bilder und korrekter Daten, die angeben, welche numerischen Werte jedes Bild angibt. es gibt. Lesen Sie diese Daten und erfahren Sie, welche Art von Bild zurückgegeben werden soll.
Erstellen Sie als Ergebnis von "1. Aus Bildern lernen und Antwortdaten korrigieren" eine Modellformel. Intern erstellen wir ein Modell mit diesem Bild (0 wird als Beispiel genommen).
Berechnen Sie, wie viel die richtige Antwortrate vom generierten Modell erhalten wird.
Die Ausführungsumgebung ist in der folgenden Abbildung dargestellt. Ich laufe von einem Jupyter-Notizbuch.
Anaconda Navigator wird über das Windows-Menü gestartet. Starten Sie dann Jupyter Notebook über Anaconda Navigator.
Benennen Sie die Datei in Jupyter Notebook um.
Alles was Sie tun müssen, ist das Tutorial auszuführen. Drücken Sie Umschalt + Eingabetaste, um den Befehl auszuführen (Eingabetaste allein ist nur ein Zeilenumbruch). Die letzte "0,9178" ist die Bewertung des Lernergebnisses, was bedeutet, dass die korrekte Antwortrate etwa 92% beträgt. 3.Computational Graph Wenn Sie Computational Graph (Berechnungsformel-Diagramm) mit TensorBoard ausgeben, sieht es so aus. Weitere Informationen finden Sie im Artikel "TensorFlow Tutorial MNIST (für Anfänger), visualisiert mit TensorBoard".
MNIST interpretiert handgeschriebene Zahlen von 0 bis 9 als 28-Punkt-Quadratdaten. Die Erklärung in diesem Artikel wäre jedoch kompliziert. Daher werden wir die beiden Arten handgeschriebener Daten, den vertikalen Balken (|) und den horizontalen Balken (-), durch quadratische 5-Punkt-Daten ersetzen. Dann sieht es aus wie in der Abbildung unten.
MINST-Daten importieren. Wenn Sie "one_hot = True" setzen, bedeutet dies, dass die Daten nicht importiert werden, wenn sie bereits lokal vorhanden sind.
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
import tensorflow as tf
Definieren Sie drei Variablen und ein Regressionsmodell. x: Variable zum Setzen des Bildes eines handgeschriebenen numerischen Werts W: Variable zum Setzen des Gewichtungswerts b: Variable zum Setzen des Bias-Werts
Wenn Sie das Obige mit einem 5-Punkt-Quadrat-Modell für vertikale und horizontale Balken erklären, sieht es so aus (der Bias-Wert von b ist eine Anpassungsvariable und ist in der Abbildung nicht enthalten). Das Modell ist so definiert, dass es mit dem Wert von $ x * W + b $ bewertet werden kann. Stellen Sie sich "tf.nn.softmax" (Softmax-Funktion) als numerische Konvertierung zur Auswertung vor.
x = tf.placeholder(tf.float32, [None, 784])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
y = tf.nn.softmax(tf.matmul(x, W) + b)
Definieren Sie hier die Speichervariable der richtigen Antwortdaten (Bild xx ist der numerische Wert xx).
y_ = tf.placeholder(tf.float32, [None, 10])
Definition von Kreuzentropie (Kreuzentropie). Die gekreuzte Entropie ist die Differenz zwischen den vorhergesagten und den tatsächlichen Werten.
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
Trainiere mit dem "tf.train.GradientDescentOptimizer".
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
sess = tf.InteractiveSession()
tf.global_variables_initializer().run()
Wiederholen Sie das Training 1000 Mal mit 100 zufälligen Daten.
for _ in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y_:batch_ys})
Hier werden der vorhergesagte Wert und die richtige Antwort abgeglichen. rect_prediction enthält Daten als True / False. tf.argmax dient zum Extrahieren des größten Wertes in den Daten (korrekter numerischer Wert). Verwenden Sie tf.argmax, um die Zahl mit der höchsten Wahrscheinlichkeit auszugeben (Bewertungswert y).
correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(y_,1))
Die richtige Antwortrate wird berechnet, indem die True / False-Daten mit tf.cast auf 1 oder 0 geändert werden.
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_:mnist.test.labels}))
Recommended Posts