[PYTHON] TensorFlow Tutorial Ich habe MNIST 3rd ausprobiert

Ich habe [TensorFlow Official Tutorial] ausprobiert (https://www.tensorflow.org/versions/r0.12/tutorials/mnist/beginners/)

mnist_softmax Ein Programm, das handgeschriebene Zeichen schätzt 60000 Trainingsdaten 10000 Testdaten Eingabe sind Bilddaten 784 (28 * 28)

Geben Sie X Zeilen 784 Spalten 1 ein Gewicht W Reihe Trainingsdatennummer Spalte 784 Bias b Zeile 10 Spalten 1 y = Softmax (W ・ x + b)

Matrix-Multiplikation matmul()

Softmax-Funktion

Das Establishment ausdrücken Das Klassifizierungsergebnis wird als Funktion der Eingabedaten erhalten Aktivierungsfunktion mit der Summe aller Ausgänge von 1 y1, y2 ... y10 (repräsentiert die Wahrscheinlichkeit der Zahlen 0-9)

Die richtige Antwort wird durch 0 und 1 dargestellt

Finden Sie das Gewicht (w) und die Vorspannung (b), damit die Etikettendaten und die Ausgabe von Softmax so nah wie möglich sind.

Kreuzentropie

Als Kostenfunktion (Fehler) Berechnen Sie die Abweichung zwischen dem geschätzten Wert und dem richtigen Antwortetikett

Programmablauf

Lesen Sie die MNISR-Daten

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

Tensorflow importieren

import tensorflow as tf

Eingabe-, Gewichts- und Bias-Einstellungen

Bereiten Sie einen leeren Behälter mit "Platzhalter" vor Variable "Variable"

x = tf.placeholder(tf.float32, [None,784])

W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))

Ausgabe (Softmax)

Die Ausgabe besteht aus 10 Elementen, insgesamt 1.

y = tf.nn.softmax(tf.matmul(x,W) + b)

Einstellung des richtigen Antwortetiketts (Lehrerdaten)

Berechnen Sie, wie weit der Unterschied zwischen "y" und "y_" in cross_entropy ist redu_mean (Durchschnitt) Summe reduzieren (gesamt)

y_ = tf.placeholder(tf.float32, [None, 10])
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))

Ausbildung

Gewichte optimieren und aktualisieren

train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

Dateninitialisierung

sess = tf.InteractiveSession()

tf.global_variables_initializer().run()

Batch-Training

Trainiere mit zufälligen Daten für 100 Chargen. 1000 mal wiederholen. Extrahieren Sie 100 Daten im Zug. sess.run(train_step, feed_dict={x: batch_xs, y_:batch_ys}) train_step Angegeben durch SGD (Gradientenabstiegsmethode) feed_dict = {x: batch_xs, y_: batch_ys} Datenquelle, x ist x von Batch, y ist y von Batch

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})

Auswertung

Vergleicht die "gleich" -Ausgabe mit der richtigen Bezeichnung und gibt True und False zurück. argmax (y, 1) Extrahiert das größte Element der Ausgabe. redu_mean Durchschnittliche Genauigkeit castTrue, Konvertiere False in eine Zahl (Verhältnis) Zum Schluss mit Testdaten auswerten

correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))

accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_ : mnist.test.labels}))

Programm

Abschließend wird eine Zusammenfassung des bisherigen Ablaufs beschrieben.

mnist_softmax.py


# coding: utf-8
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

import tensorflow as tf

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)


y_ = tf.placeholder(tf.float32, [None, 10])
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))

train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

sess = tf.InteractiveSession()

tf.global_variables_initializer().run()

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})

correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
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

TensorFlow Tutorial Ich habe MNIST 3rd ausprobiert
Ich habe das TensorFlow-Tutorial als erstes ausprobiert
Ich habe das 2. TensorFlow-Tutorial ausprobiert
Ich habe das MNIST-Tutorial von tensorflow für Anfänger ausprobiert.
TensorFlow Tutorial Ich habe CNN 4th ausprobiert
Ich habe zum ersten Mal Tensorflow ausprobiert
Ich habe versucht, das TensorFlow-Tutorial mit Kommentaren auszuführen (_TensorFlow_2_0_Einführung für Anfänger).
Ich habe versucht, TensorFlow auszuführen
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.
Ich habe die Changefinder-Bibliothek ausprobiert!
Ich habe das TensorFlow-Tutorial mit Kommentaren ausgeführt (Textklassifizierung von Filmkritiken).
63. Tag habe ich Tensorflow installiert.
Ich habe versucht, Magenta / TensorFlow zu verwenden
Ich habe versucht, den für TensorFlow geschriebenen Code nach Theano zu portieren
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Ich habe versucht, das CNN-Modell von TensorFlow mit TF-Slim umzugestalten
[Für Anfänger] Ich habe versucht, die Tensorflow-Objekterkennungs-API zu verwenden
[Erklärung für Anfänger] TensorFlow-Tutorial MNIST (für Anfänger)
Ich habe die Naro-Roman-API 2 ausprobiert
TensorFlow Tutorial MNIST Für ML-Anfänger
Ich habe die neuartige API von Naruro ausprobiert
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, die checkio-API zu verwenden
TensorFlow Tutorial -MNIST Für ML-Anfänger
Ich habe versucht, den Abschnitt zu schätzen.
TensorFlow Tutorial Tutorial
[Erklärung für Anfänger] TensorFlow-Tutorial Deep MNIST
Ich habe den asynchronen Server von Django 3.0 ausprobiert
Ich habe versucht, Autoencoder mit TensorFlow zu implementieren
Ich habe versucht, den Befehl umask zusammenzufassen
Ich habe versucht, AutoEncoder mit TensorFlow zu visualisieren
Ich versuchte das Weckwort zu erkennen
Ich habe versucht, ○ ✕ mit TensorFlow zu spielen
Ich habe das OSS-Visualisierungstool superset ausprobiert
Ich habe versucht, Text mit TensorFlow zu klassifizieren
Ich habe versucht, die grafische Modellierung zusammenzufassen.
Ich habe versucht, das Umfangsverhältnis π probabilistisch abzuschätzen
Ich habe versucht, die COTOHA-API zu berühren
Python: Ich habe das Problem des Handlungsreisenden ausprobiert
Ich habe versucht, mit Pillow mit dem Bild zu spielen
Ich habe das Python Tornado Testing Framework ausprobiert
Ich habe versucht, die BigQuery-Speicher-API zu verwenden
Ich habe versucht, das Gesichtsbild mit sparse_image_warp von TensorFlow Addons zu transformieren
Ich habe versucht, das Bild mit Python + OpenCV zu "glätten"
Ich habe Web Scraping versucht, um die Texte zu analysieren.
Ich habe die Pivot-Table-Funktion von Pandas ausprobiert
[Python] Ich habe versucht, den Funktionsnamen durch den Funktionsnamen zu ersetzen
Ich habe versucht, die Wetterkarte einer Clusteranalyse zu unterziehen
Ich habe versucht, die Qiita-API von Anfang an zu aktivieren
vprof - Ich habe versucht, den Profiler für Python zu verwenden
Ich habe versucht, GAN (mnist) mit Keras zu bewegen
Ich habe versucht, das Bild mit Python + OpenCV zu "differenzieren"
Ich habe versucht zu kratzen
Ich habe versucht, beim Trocknen der Wäsche zu optimieren
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe PyQ ausprobiert
Ich habe versucht, "Birthday Paradox" mit Python zu simulieren
Ich habe die Methode der kleinsten Quadrate in Python ausprobiert