[PYTHON] Ich habe versucht, das TensorFlow-Tutorial mit Kommentaren auszuführen (_TensorFlow_2_0_Einführung für Anfänger).

Referenz-URL: https://www.tensorflow.org/tutorials/quickstart/beginner?hl=ja

Ziel

Mach Folgendes

Vorbereitung der Verpackung

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
#Tensorflow ver Bestätigung
print(tf.__version__)
2.3.0

Bereiten Sie den Datensatz vor

Dieses Mal werde ich MNIST verwenden

Andere Datensätze: https://www.tensorflow.org/api_docs/python/tf/keras/datasets?hl=JA

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()

#Konvertieren Sie das Sample von einer Ganzzahl in eine Gleitkommazahl (konvertieren Sie 0 in 255 in einen Bereich von 0 in 1).
x_train, x_test = x_train / 255.0, x_test / 255.0
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
11493376/11490434 [==============================] - 0s 0us/step
#Überprüfen Sie die Form der Daten
print(x_train.shape)
print(x_test.shape)
(60000, 28, 28)
(10000, 28, 28)

Ein Modell bauen

Prozessablauf

  1. 28 ✖️ 28 2D-Daten auf 1D geglättet

    tf.keras.layers.Flatten

input_shape = (28, 28) gibt die Form der Eingabedaten an

  1. Definition der verborgenen Schicht

    tf.keras.layers.Dense

128 ist die Anzahl der Einheiten (Anzahl der Neuronen) activity = 'relu' gibt die Aktivierungsfunktion ReLU an Weitere Aktivierungsfunktionen: https://www.tensorflow.org/api_docs/python/tf/keras/activations?hl=ja

  1. Definition des Aussetzers

Deaktivieren Sie einige Neuronen nach dem Zufallsprinzip, um ein Überlernen zu verhindern 0,2 deaktiviert 20%

  1. Definition der vollständig verbundenen Schicht

Geben Sie 10 an, da es endgültig in 10 Klassen eingeteilt wird

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10)
])

Vorhersagen vor dem Lernen

Berechnen Sie für jede Klasse eine Punktzahl namens "Logit" oder "Log Odds Ratio"

Visualisieren Sie Vorhersagedaten

Ist es die Nummer 5? ??

plt.figure()
plt.imshow(x_train[0] * 255, cmap="gray")
plt.grid(False)
plt.show()

output_14_0.png

Vorhersage mit Pre-Training-Modell

predictions = model(x_train[:1]).numpy()
predictions
array([[-0.68039566,  0.24756509,  0.03884459,  0.13278663, -0.09757528,
        -0.41739488, -0.07566899, -0.00817996,  0.17783645,  0.13316259]],
      dtype=float32)

Form der Daten, die zum Zeitpunkt der Vorhersage eingegeben werden sollen

Beachten Sie, dass die Form nicht mit "x_train [0]" übereinstimmt Das Modell wurde entwickelt, um Vorhersagen über eine Charge zu treffen oder eine Stichprobe zu "sammeln".

print(x_train[0].shape)
print(x_train[:1].shape)
(28, 28)
(1, 28, 28)

Punktzahl in Wahrscheinlichkeit umwandeln

predictions_probability = tf.nn.softmax(predictions).numpy()
print(predictions_probability)
#Ermittelt den Index des maximalen Elements aus der vorhergesagten Wahrscheinlichkeit
np.argmax(predictions_probability)
[[0.05172387 0.13082756 0.10618253 0.1166411  0.09264173 0.06728384
  0.09469356 0.10130493 0.12201592 0.11668495]]





1

Definition der Verlustfunktion

Verlustfunktion

Nimmt Kreuzentropie an

Weitere Verlustfunktionen: https://www.tensorflow.org/api_docs/python/tf/keras/losses?hl=ja

loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
loss_fn(y_train[:1], predictions).numpy()
2.6988351

Modell kompilieren

Ein Modell für das Lernen definieren

--optimer: Optimierer

model.compile(optimizer='adam',
              loss=loss_fn,
              metrics=['accuracy'])

Modelllernen

Lerne mit einer Epoche von 5 Epoche: Wie oft werden Trainingsdaten wiederholt trainiert? "

model.fit(x_train, y_train, epochs=5)
Epoch 1/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.2981 - accuracy: 0.9127
Epoch 2/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.1435 - accuracy: 0.9572
Epoch 3/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.1079 - accuracy: 0.9671
Epoch 4/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.0875 - accuracy: 0.9728
Epoch 5/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.0750 - accuracy: 0.9768





<tensorflow.python.keras.callbacks.History at 0x7f12f819d5c0>

Bewertung der Modellleistung

Berechnen Sie den Modellverlust und die Genauigkeit anhand von Testdaten verbose ist eine Option, um den Fortschrittsbalken anzuzeigen Dieses Modell zeigt eine Genauigkeitsrate von 97% in den Testdaten.

model.evaluate(x_test,  y_test, verbose=1)
313/313 [==============================] - 0s 1ms/step - loss: 0.0742 - accuracy: 0.9772





[0.07416515052318573, 0.9771999716758728]

Modellausgabe ändern

Bei der Ausgabe der Wahrscheinlichkeit anstelle des numerischen Wertes

probability_model = tf.keras.Sequential([
  model,
  tf.keras.layers.Softmax()
])
predictions = probability_model(x_test[:5])

#Visualisieren und vergleichen Sie Vorhersagen und richtige Antworten
for index, prediction in enumerate(predictions):
    print(f'Prognose:{np.argmax(prediction)}Richtige Antwort:{y_test[index]}')
    ax = plt.subplot(3, 3, index + 1)
    plt.imshow(x_test[index] * 255, cmap="gray")
    plt.show()

Vorhersage: 7 Richtige Antwort: 7

output_33_1.png

Vorhersage: 2 Richtige Antwort: 2

output_33_3.png

Vorhersage: 1 Richtige Antwort: 1

output_33_5.png

Vorhersage: 0 Richtige Antwort: 0

output_33_7.png

Vorhersage: 4 Richtige Antwort: 4

output_33_9.png

Recommended Posts

Ich habe versucht, das TensorFlow-Tutorial mit Kommentaren auszuführen (_TensorFlow_2_0_Einführung für Anfänger).
Ich habe das MNIST-Tutorial von tensorflow für Anfänger ausprobiert.
Ich habe das TensorFlow-Tutorial als erstes ausprobiert
Ich habe das 2. TensorFlow-Tutorial ausprobiert
[Für Anfänger] Ich habe versucht, die Tensorflow-Objekterkennungs-API zu verwenden
TensorFlow Tutorial Ich habe MNIST 3rd ausprobiert
Ich habe zum ersten Mal Tensorflow ausprobiert
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 das TensorFlow-Tutorial mit Kommentaren ausgeführt (erstes neuronales Netzwerk: Beginn des Klassifizierungsproblems)
Ich habe versucht, den für TensorFlow geschriebenen Code nach Theano zu portieren
[Erklärung für Anfänger] TensorFlow-Tutorial MNIST (für Anfänger)
TensorFlow Tutorial Ich habe CNN 4th ausprobiert
TensorFlow Tutorial MNIST Für ML-Anfänger
TensorFlow Tutorial -MNIST Für ML-Anfänger
Ich habe versucht, die häufig verwendete Seaborn-Methode mit so wenig Argumenten wie möglich anzuwenden [für Anfänger]
Ich habe versucht, die Anfängerausgabe des Ameisenbuchs mit Python zu lösen
[Pandas] Ich habe versucht, Verkaufsdaten mit Python zu analysieren. [Für Anfänger]
Ich habe versucht, den DNN-Teil von OpenPose mit Chainer-CPU auszuführen
Ich habe versucht, Autoencoder mit TensorFlow zu implementieren
Ich habe versucht, mit Pillow mit dem Bild zu spielen
Ich habe versucht, das Bild mit Python + OpenCV zu "glätten"
[Python] Ich habe versucht, den Funktionsnamen durch den Funktionsnamen zu ersetzen
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe mit TensorFlow eine nicht negative Matrixzerlegung (NMF) versucht
Ich habe vorerst mit Floydhub gespielt
Ich habe zum ersten Mal versucht, Python zu programmieren.
Ich habe versucht, das Bild mit Python + OpenCV zu "binarisieren"
Ich habe versucht, mit Python Faiss zu laufen, Go, Rust
Ich habe Mind Meld zum ersten Mal ausprobiert
Ich habe versucht, Deep Floor Plan mit Python 3.6.10 auszuführen.
Ich habe versucht, mit tkinter mit dem Taschenrechner zu spielen
Ich habe versucht, das Objekterkennungs-Tutorial mit dem neuesten Deep-Learning-Algorithmus auszuführen
Ich habe versucht, Objekte mit YOLO v3 (TensorFlow 2.1) auf der GPU von Windows zu erkennen!
Ich habe versucht, die Sündenfunktion mit Chainer zu trainieren
[Übersetzung] NumPy Official Tutorial "NumPy: die absoluten Grundlagen für Anfänger"
Ich habe versucht, mit dem Seq2Seq-Modell von TensorFlow so etwas wie einen Chatbot zu erstellen
Ich habe versucht, Pymc auszuführen
Ich habe Python zum ersten Mal auf dem Mac ausprobiert.
Ich habe versucht, die App auf der IoT-Plattform "Rimotte" auszuführen.
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
[Für Anfänger von Wettkampfprofis] Ich habe versucht, 40 AOJ "ITP I" -Fragen mit Python zu lösen
Ich habe Python zum ersten Mal mit Heroku ausprobiert
Ich habe versucht, TensorFlow in der AWS Lambda-Umgebung auszuführen: Vorbereitung
Ich habe versucht, die Laufdaten des Rennspiels (Assetto Corsa) mit Plotly zu visualisieren
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich habe einen einfachen RPA für die Anmeldung mit Selen ausprobiert
Ich habe versucht, Grad-CAM mit Keras und Tensorflow zu implementieren
[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 versucht, die alternative Klasse mit Tensorflow zu finden
Ich habe versucht, die API mit dem Python-Client von echonest zu erreichen
Ich habe versucht, den Beispielcode des Ansible-Moduls auszuführen
[Für diejenigen, die TPU verwenden möchten] Ich habe versucht, die Tensorflow Object Detection API 2 zu verwenden
Ich habe versucht, das Offline-Spracherkennungssystem Julius mit Python in der virtuellen Docker-Umgebung auszuführen
Ich habe versucht, die Entropie des Bildes mit Python zu finden
[TensorFlow] Ich möchte die Indizierung für Ragged Tensor beherrschen