[PYTHON] TensorFlow Tutorial -MNIST Für ML-Anfänger

Was ist MNIST?

Zunächst werde ich kurz den MNIST erläutern, der dieses Mal verwendet werden soll. MNIST ist der Name eines Bilddatensatzes handgeschriebener Zahlen (0-9). Der Inhalt des diesmal verwendeten MNIST-Datensatzes ist ・ Zug: 55.000 Blatt ・ Validierung: 5000 Blatt ・ Test: 10000 Blatt Es besteht aus insgesamt 70.000 Blättern und besteht aus handgeschriebenen numerischen Bildern und korrekten Antwortetiketten.

Zug ist Training, Validierung ist Hyperparametertraining, Test wird verwendet, um die Genauigkeit des erstellten Modells zu überprüfen, und dieser Code verwendet keine Verifizierungsdaten.

Bildinformationen

Ein Bild ist ein 28 * 28 graues Bild (= 1 Kanal) Untitled Diagram (1).png

Erstellungsmodell

Das diesmal erstellte Modell lautet wie folgt

Die Ebenentiefe ist ein einfaches Modell mit nur zwei Ebenen, einer Eingabeebene und einer Ausgabeebene. Die Anzahl der Neuronen in der Eingabeschicht beträgt 784 in Länge x Breite x Anzahl der Kanäle (28 * 28 * 1), wenn das MNIST-Bild in ein eindimensionales Array konvertiert wird, und die Ausgabe beträgt 0 bis 9 für insgesamt 10 Die Methode zum Konvertieren in dieses eindimensionale Array ignoriert die Beziehung und Form benachbarter Pixelinformationen, aber dieses Mal werden wir diese Methode verwenden. Das nächste Mal möchte ich eine Schätzung mit der Methode unter Verwendung von CNN vornehmen.

Quellcode

mnist_for_ml_beginners


#TensorFlow importieren
import tensorflow as tf
#Importieren von Numpu aus der Bibliothek zur numerischen Berechnung
import numpy as np
#tensorflow.contrib.learn.python.learn.datasets.mnist.py Funktion gelesen_data_Sets importieren
from tensorflow.contrib.learn.python.learn.datasets.mnist import read_data_sets

#MNIST-Daten lesen
mnist = read_data_sets("MNIST_data/", one_hot=True)

#Eingangsvariablen(Die Anzahl der Daten:Keine Eingabedaten:784 Stück)
x = tf.placeholder("float", [None, 784])

#Gewichtsvariablen(Mit 0 initialisieren)
W = tf.Variable(tf.zeros([784, 10]))
#Vorspannungsvariable(Mit 0 initialisieren)

b = tf.Variable(tf.zeros([10]))

#Ausgabe(Führen Sie eine Softmax-Regression durch, nachdem Sie das innere Produkt von x und W berechnet und die Verzerrung hinzugefügt haben)
#Der Gesamtwert der Ausgabe wird mithilfe der Softmax-Funktion zu 1.(=Kann als Wahrscheinlichkeit ausgedrückt werden)
y = tf.nn.softmax(tf.matmul(x, W) + b)

#Variablen für korrekte Beschriftungen(1 von 10 Werten ist 1 und der Rest ist 0)
y_ = tf.placeholder("float", [None, 10])

#Berechnen Sie den Kreuzentropiefehler(Je größer der Wert von y ist, der dem richtigen Antwortetikett entspricht, desto näher an 0)
cross_entropy = -tf.reduce_sum(y_ * tf.log(y))

#Minimieren Sie den Kreuzentropiefehler mithilfe des Gradientenabfalls
#Die Lernrate beträgt 0.001(Hyperparameter)
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)

#Starten Sie das in der Sitzung erstellte Modell
sess = tf.Session()
#Initialisieren
#tf.initialize_all_variables() ->  tf.global_variables_initializer()
sess.run(tf.global_variables_initializer())

#Fangen Sie 1000 Mal an zu lernen
for i in range(1000):
    #Stapelverarbeitung(Holen Sie sich zufällig 100 aus dem Zug)
    batch_xs, batch_ys = mnist.train.next_batch(100)
    #feet_In Dikt x und y_Ersetzen Sie den Wert durch einen Platzhalter in
    sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})


#Bewerten Sie das Modell
#argmax(y,1) :Berechnen Sie den Index des größten Werts in y
#tf.equal(,) :True, wenn die Werte übereinstimmen, andernfalls False
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))

#tf.cast() :Bool-Typ in Float-Typ umwandeln(True =1, False =0)
#tf.reduce_mean() :Durchschnittswert berechnen
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))

#Genauigkeitsberechnung(=Verwenden Sie den Mnist-Test)
print (sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

Die Genauigkeit des Ausführungsergebnisses betrug ca. 92%

abschließend

Was ich diesmal gelernt habe ・ Eingabe x und korrekte Bezeichnung y_ sind Platzhalter ・ Gewicht W und Vorspannung b sind variabel Benutzen.

Wenn Sie diesen Code implementieren, wird er auch mithilfe der GPU berechnet. Daher habe ich festgestellt, dass es sich um eine Bibliothek handelt, in der Sie problemlos maschinelles Lernen ausprobieren können. Daher möchte ich auch in Zukunft verschiedene Dinge mit TensorFlow ausprobieren.

Die Seite, die ich als Referenz verwendet habe

  1. TensorFlow MNIST für ML-Anfänger-Tutorial
  2. TensorFlow: MNIST für ML-Anfänger (Code-Erklärung)

Recommended Posts

TensorFlow Tutorial MNIST Für ML-Anfänger
TensorFlow Tutorial -MNIST Für ML-Anfänger
Durchführen des TensorFlow MNIST für ML-Anfänger-Tutorials
[Erklärung für Anfänger] TensorFlow-Tutorial MNIST (für Anfänger)
TensorFlow MNIST Für ML Anfänger Übersetzung
[Erklärung für Anfänger] TensorFlow-Tutorial Deep MNIST
Ergänzende Hinweise zu TensorFlow MNIST für ML-Anfänger
[Übersetzen Sie das TensorFlow-Tutorial grob ins Japanische] 1. MNIST für ML-Anfänger
Ich habe das MNIST-Tutorial von tensorflow für Anfänger ausprobiert.
TensorFlow MNIST Für ML Anfänger Übersetzung
TensorFlow Tutorial MNIST Für ML-Anfänger
TensorFlow Tutorial -MNIST Für ML-Anfänger
Ergänzende Hinweise zu TensorFlow MNIST für ML-Anfänger
Durchführen des TensorFlow MNIST für ML-Anfänger-Tutorials
Ich habe das TensorFlow-Tutorial (MNIST für Anfänger) zur Cloud9-Klassifizierung handgeschriebener Bilder ausprobiert.
[Übersetzen Sie das TensorFlow-Tutorial grob ins Japanische] 2. Deep MNIST For Experts
TensorFlow Tutorial Tutorial
[Veraltet] Chainer v1.24.0 Anfänger-Tutorial
TensorFlow Deep MNIST für Expertenübersetzung
Ich habe versucht, das TensorFlow-Tutorial mit Kommentaren auszuführen (_TensorFlow_2_0_Einführung für Anfänger).
TensorFlow Tutorial Ich habe MNIST 3rd ausprobiert
Django Tutorial Zusammenfassung für Anfänger von Anfängern ③ (Anzeigen)
Anfänger lesen "Einführung in TensorFlow 2.0 für Experten"
Django Tutorial Zusammenfassung für Anfänger von Anfängern ⑤ (Test)
[Erklärung für Anfänger] Grundlegende Syntax und Konzept von TensorFlow
Django Tutorial Zusammenfassung für Anfänger von Anfängern ⑦ (Customize Admin)
Django Tutorial Zusammenfassung für Anfänger von Anfängern ⑥ (statische Datei)
Django Tutorial Zusammenfassung für Anfänger von Anfängern ② (Model, Admin)
Django Tutorial Zusammenfassung für Anfänger von Anfängern ① (Projekterstellung ~)
Django Tutorial Zusammenfassung für Anfänger von Anfängern ④ (Generic View)
Installieren von TensorFlow unter Windows Easy für Python-Anfänger
Code für TensorFlow MNIST Anfänger / Experte mit japanischen Kommentaren
[Übersetzung] NumPy Official Tutorial "NumPy: die absoluten Grundlagen für Anfänger"
Spacemacs-Einstellungen (für Anfänger)
Aktivieren Sie die GPU für den Tensorflow
Dikstra-Algorithmus für Anfänger
OpenCV für Python-Anfänger
[Erklärung für Anfänger] Einführung in die Faltverarbeitung (erklärt in TensorFlow)
[Erklärung für Anfänger] Einführung in die Pooling-Verarbeitung (erklärt in TensorFlow)
TensorFlow-Lernmethode für Profis der freien Künste und Python-Anfänger
[Für Anfänger] Ich habe versucht, die Tensorflow-Objekterkennungs-API zu verwenden
Installationshinweise für TensorFlow für Windows
Lernablauf für Python-Anfänger
[Für Anfänger] Kaggle-Übung (Merucari)
Empfohlene Linux-Distribution für Anfänger
CNN (1) zur Bildklassifizierung (für Anfänger)
Python3-Umgebungskonstruktion (für Anfänger)
Übersicht über Docker (für Anfänger)
Python #Funktion 2 für Super-Anfänger
Seaborn Basics für Anfänger ④ Pairplot
100 Pandas klopfen für Python-Anfänger
Python #Funktion 1 für Super-Anfänger
Python #Liste für Super-Anfänger
~ Tipps für Python-Anfänger mit Liebe von Pythonista ③ ~
[Für Kaggle-Anfänger] Titanic (LightGBM)
Versuchen Sie TensorFlow MNIST mit RNN
Praktische Linux-Verknüpfung (für Anfänger)