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.
Ein Bild ist ein 28 * 28 graues Bild (= 1 Kanal)
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.
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%
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.
Recommended Posts