[PYTHON] Tensorflow / Keras-Zusammenfassung

Tensorflow / Keras-Zusammenfassung

Was ist neuronales Netzwerklernen? Die Trainingsdaten werden verwendet, um die Kombination von Fragen (Eingabe / Daten) und Antworten (Ausgabe / Etikett) zu lernen. Und wenn Sie Testdaten als Eingabe für dieses trainierte Netzwerk verwenden, Durch Analyse der erhaltenen Ausgabe kann die Leistung des neuronalen Netzwerks gemessen werden.

Nutzungsumgebung

Python-Umgebung in VScode unter Verwendung der Basis von Anaconda. Ich möchte darüber in einem anderen Artikel sprechen.

Hauptverwendung von Keras

Es ist einfacher zu verstehen, wenn Sie anhand von Anwendungsbeispielen lernen. Wir würden uns freuen, wenn Sie sich die Programmkommentare genauer ansehen könnten.

・ Wie man MNIST durch allgemeines maschinelles Lernen trainiert (nicht CNN, RNN, LSTM)

mnist.py


#Importieren Sie die MNIST-Bibliothek.
from keras.datasets import mnist
from keras import models
from keras import layers
from keras import optimizers
from keras import regularizers
from keras import utils

#Trainingsdaten(50.000 Stück)Und Testdaten(10000 Stück)Bereiten.
#Dieses Mal wird die Holdout-Methode als Bewertung verwendet.
#Wenn die Daten klein sind, müssen die Überprüfung der k-Teilungskreuzung und die zufällige Überprüfung der k-Teilungsschnittstelle berücksichtigt werden.
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
print(train_images.shape)
print(len(train_labels))
print(train_labels)
print(test_images.shape)
print(len(test_labels))
print(test_labels)

#Erstellen Sie ein Modell eines linearen Stapels.
network = models.Sequential()
#Dicht bezieht sich auf eine eng gekoppelte Schicht.
# add()Sie können Ebenen mit hinzufügen.
#Einheiten ist die Anzahl der Zellen.
# kernel_Der Regularizer verhindert Überlernen, indem er die Netzwerkgewichtswerte regelmäßig macht.
# kernel_Sowohl die L1-Regularisierung als auch die L2-Regularisierung werden auf den Regularisierer angewendet, es kann jedoch entweder eine verwendet werden oder nicht.
#Aktivierung ist eine Art Aktivierungsfunktion
# input_Form ist Arrays von Form(*, 28*28).. Formal schwer zu verstehen.
#Durch Dropout wird ein Teil der Daten, der sich von der unmittelbar vorhergehenden Schicht zur unmittelbar folgenden Schicht ausbreitet, auf 0 gesetzt.
#Überlernen kann durch absichtliches Hinzufügen von Rauschen verhindert werden. Grundsätzlich wird es in die mittlere Schicht gelegt, aber es ist nicht notwendig.
network.add(layers.Dense(units=512,
                         kernel_regularizer=regularizers.l1_l2(l1=0.001, l2=0.001),
                         activation='relu',
                         input_shape=(28 * 28, ))) #Vollständig verbundene Schicht
network.add(layers.Dropout(0.25)) #Dropout-Ebene
network.add(layers.Dense(units=10,
                         activation='softmax')) #Softmax-Schicht

#Sie müssen kompilieren, um sich auf das Training Ihres Netzwerks vorzubereiten.
#Die Zielfunktion kann mit Verlust eingestellt werden, diesmal der Kreuzentropiefehler.
#Sie können die Lernmethode mit einem Optimierer wie SGD, Momentum SGD, AdaGrad, RMSprop einstellen.
# metrics=['accuracy']Mittel zur Berechnung der richtigen Antwortrate.
network.compile(optimizer='rmsprop',
                loss='categorical_crossentropy',
                metrics=['accuracy'])

#Verarbeiten Sie MNIST-Daten vor dem Training vor.
#Der Wert des Tensors ist 0, da er viel Berechnung erfordert.~Es ist notwendig, solche Dinge wie zwischen 1 zu setzen.
train_images = train_images.reshape((60000, 28 * 28))
train_images = train_images.astype('float32') / 255
test_images = test_images.reshape((10000, 28 * 28))
test_images = test_images.astype('float32') / 255
print(train_images.shape)
print(train_images)
print(test_images.shape)
print(test_images)

#Ausgabe(Etikette)Ist die Zahl "0",1,2,3,~,Da es in "9" unterteilt ist, muss es mit einem Kategoriewert codiert werden.
# [1, 0, 0, 0, 0, 0, 0, 0, 0]…0
# [0, 0, 1, 0, 0, 0, 0, 0, 0]…2
# [0, 0, 0, 0, 0, 1, 0, 0, 0]…6
#Wie 0,1 steht für eine Zahl.
train_labels = utils.to_categorical(train_labels)
test_labels = utils.to_categorical(test_labels)

#Nachdem wir nun bereit sind, das Netzwerk zu trainieren, rufen wir die Anpassungsmethode auf, um das Modell an die Trainingsdaten anzupassen.
#Geben Sie die Eingabe- und Ausgabedaten für die Trainingsdaten in die Argumente ein.
#Epochen gibt an, wie oft die gesamten Daten verwendet werden. Es wird angezeigt, wie oft alle Daten gleich verwendet werden, und es kommt zu Überlernen, wenn zu viele Daten verwendet werden.
# batch_Größe gibt an, wie viele Unterteilungen die für das Training verwendeten Eingabedaten aufgeteilt werden sollen.
#Diesmal sind es 50.000 Daten, also 50.000 ÷ 100=Bei 500,"1"Lernen Sie mit 500 Daten 100 Mal pro Epoche. Ich kenne den detaillierten Grund nicht.
network.fit(train_images, train_labels, epochs=10, batch_size=100)

#Sofort geschultes Netzwerk(network)Verwenden von,
#Verlustwert in Testdaten(loss)Und richtige Antwortrate(accuracy)Fragen.
#Geben Sie die Eingabe- und Ausgabedaten der Testdaten in das Argument ein.
test_loss, test_acc = network.evaluate(test_images, test_labels)
print('test_acc:', test_acc)
#Ergebnis ist "# test_acc: 0.9795 ", aber der Wert variiert je nach Umgebung.
#Der Grund dafür ist, dass Keras beim Initialisieren des Netzwerks zufällig einen Startwert auswählt.

・ Wie trainiere ich MNIST mit LSTM?

mnist_1.py




Recommended Posts

Tensorflow / Keras-Zusammenfassung
Zusammenfassung verschiedener Operationen in Tensorflow
Keras als Wrapper von Theano & TensorFlow
Zusammenfassung der Verwendung von pyenv
Zusammenfassung der Zeichenfolgenoperationen
Zusammenfassung der Python-Argumente
Zusammenfassung der Testmethode
Zusammenfassung der Fehlerbehandlungsmethoden bei der Installation von TensorFlow (2)
Zusammenfassung der Python-Dateivorgänge
Zusammenfassung der Python3-Listenoperationen
2017.3.6 ~ 3.12 Zusammenfassung unserer Aktivitäten
Tensorflows praktische Bibliothek TF-Slim
Experiment zur Optimierung der Tensorflow-Daten
Bequeme Nutzungsübersicht von Flask
Zusammenfassung der Linux-Verteilungstypen
Zusammenfassung der grundlegenden Verwendung von Pandas
Eine kurze Zusammenfassung von Linux
Ich berührte Tensorflow und Keras
Zusammenfassung der Proxy-Verbindungseinstellungen
[Keras] Batch-Inferenz der Bogenfläche
MNIST (DCNN) mit Keras (TensorFlow-Backend)
Zusammenfassung der Verwendung von pandas.DataFrame.loc
Zusammenfassung der Grundkenntnisse von PyPy Teil 1
Zusammenfassung der grundlegenden Implementierung von PyTorch
Installieren Sie eine ältere Version von Tensorflow
Zusammenfassung der Kratzbeziehung (Selen, Pyautogui)
Eine kurze Zusammenfassung der Python-Sammlung
H29.2.27 ~ 3.5 Zusammenfassung meiner Arbeit
Zusammenfassung der Stack Overflow Developer Survey 2020
Zusammenfassung der Verwendung von pyenv-virtualenv
Maschinelles Lernen ③ Zusammenfassung des Entscheidungsbaums
[TensorFlow] [Keras] Aufbau eines neuronalen Netzwerks mit Keras
Eine grobe Zusammenfassung der Geschichte des Betriebssystems
Umleitung trainierter Keras-Modellschichten
Vorhersage der Sinuswelle mit Keras
Ich habe die Quantenbits (Anfänger) kurz zusammengefasst.
Zusammenfassung des Konvertierungsverhaltens von go json
TensorFlow Tutorial-Vektordarstellung von Wörtern (Übersetzung)
Implementierung von Light CNN (Python Keras)
[Anaconda3] Zusammenfassung häufig verwendeter Befehle
Zusammenfassung der Verwendung von csvkit
[Für Wettkampfprofis] Zusammenfassung der Verdoppelung
Zusammenfassung der Python-Indizes und -Slices
Zusammenfassung der Mehrprozessverarbeitung der Skriptsprache
[OpenCV; Python] Zusammenfassung der Funktion findcontours
4/22 Vorhersage der Sinuswelle mit Keras
Version vom Juni 2017 zum Erstellen einer Tensorflow / Keras-Umgebung auf einer GPU-Instanz von AWS
[Python] Zusammenfassung der Verwendung von Pandas
28.02.2014 Zusammenfassung der in #ssmjp, Teil 1, vorgestellten Inhalte
Zusammenfassung der häufig verwendeten Befehle von Django (Anfänger)
Zusammenfassung der häufig verwendeten Methoden bei Pandas
Zusammenfassung der Methoden zur automatischen Ermittlung von Schwellenwerten
Garantie der Reproduzierbarkeit mit Keras (Stand 22. September 2020)
Zusammenfassung der Spezifikationsmethode für Gammaverteilungsparameter
Zusammenfassung der häufig verwendeten Befehle in matplotlib