Bearbeiten und im Jupyter Nootbook ausführen
Ein TensorFlow
Schritte:
一 Importieren Sie den Tensorfluss als tf
2. Daten laden
(Datenstapel)
3. Platzhalter definieren (dann in das Trainingsset übergehen)
x = tf.placeholder (tf.float32, [维度], name = "")
4. Struktur und Parameter definieren (w, b)
Schreiben Sie die Vorhersagefunktion z = (Aktivierungsfunktion (wx + b)) auf
Kann ausfallen (Überanpassung verhindern)
Der vierte Schritt besteht darin, jede Schicht des neuronalen Netzwerks einmal zu definieren (die Aktivierungsfunktion der letzten Schicht unterscheidet sich im Allgemeinen von der vorherigen).
w = tf.Variable (tf.zeros ([]))
wx_plus_b = tf.matmul (w, x) + b
L1 = tf.nn. Aktivierungsfunktion (wx_plus_b) (die letzte Schicht heißt Vorhersage)
#aussteigen
keep_prob = tf.placeholder (tf.float32) (oder direkt als Konstante definiert)
L1_drop = tf.nn.dropout (L1, keep_prob)
Fünf. Definieren Sie die Kostenfunktion (quadratische Kostenfunktion, Kreuzentropiekostenfunktion)
Verlust = tf.reduce_mean (tf.square (y-Vorhersage)) (quadratische Kostenfunktion) (das Folgende ist die entropieübergreifende Kostenfunktion)
Verlust = tf.reduce_mean (tf.nn.softmax_cross_entropy_with_logits (Labels = y, Logits = Vorhersage))
或 tf.nn.sigmoid_cross_entropy_with_logits
Vorhersage ist eine Vorhersagefunktion (ohne Aktivierungsfunktion (Softmax oder Sigmoid, im Allgemeinen werden diese beiden in der letzten Schicht verwendet), da dies in dieser Funktion erfolgt).
(tf.reduce_mean ist zu durchschnittlich)
Sechs. Optimierertraining, Lernrate definieren (zufälliger Gradientenabstieg usw.)
train_step = tf.nn.GradientDescentOptimizer (0.5) .minimiere (Verlust)
tf.nn.AdadeltaOptimizer ()
tf.nn.adagradOptimizer ()
.... viele Optimierungsmethoden
Sieben. Ich suche Genauigkeit
rect_prediction = tf.equal (tf.argmax (y, 1), tf.argmax (Vorhersage, 1))
#argmax gibt die Position des größten Werts in einem eindimensionalen Tensor zurück, wobei die gleichen Richter gleich sind
Genauigkeit = tf.reduce_mean (tf.cast (korrekte_Vorhersage, tf.float32))
Acht. Variablen initialisieren
init = tf.global_variabies_initializer ()
九。mit tf.Session als Sitzung:
sess.run (init)
für die Epoche im Bereich (51): # 51-mal trainieren
sess.run ([], feed_dict = {x :, y:})
# [] Schreiben Sie das auszuführende OP, z. B. train_step. Der Feed-Wert folgt.
Diese Funktion kann einen Rückgabewert haben, der Rückgabewert ist das Ausführungsergebnis von OP. Wenn OP ein Element ist, geben Sie einen Wert zurück.
Wenn OP eine Liste ist, wird der Wert der Liste zurückgegeben. Wenn OP ein Wörterbuchtyp ist, wird ein Wörterbuch mit denselben Schlüsseln wie OP zurückgegeben.
acc = sess.run (accury, feed_dict = {})
print ("Iter" + str (Epoche) + ", Testgenauigkeit" + str (acc))
Kann optimiert werden :
1. Datenstapelung
2. Wie viele Trainingsdaten
3. Aktivierungsfunktion ändern
4. Erhöhen Sie die Anzahl der Neuronen und Netzwerke
5. Dropout hinzufügen (Dropout-Parameter keep_prob anpassen) oder regulieren
6. Lernrate
7. Ändern Sie die Optimierungsmethode
8. Erhöhte Trainingszeiten
Verwenden Sie tensorBoard zur Netzwerkvisualisierung
1. Jedem Teil (der gemäß den vorherigen Schritten im Wesentlichen in Blöcke unterteilt ist) wird ein Namespace vorangestellt, und ein Unterraum kann hinzugefügt werden
mit tf.name_scope ('Definiere deinen eigenen Raumnamen'):
mit tf.name_scope (''): (Platzhalter und Variable müssen Namensparameter hinzufügen, sonst nichts)
x = Platzhalter (tf.float32, [None, 10], name = "x_input")
2. Zum Schluss mit tf.Session () als sess: add:
writer = tf.summary.FileWriter ('logs / (selbst definierter Pfad und Ordner)', sess.graph)
3. Führen Sie aus, öffnen Sie das Eingabeaufforderungsfenster cmd und geben Sie d ein: (Gehen Sie zum Laufwerk d)
tensorboard --logdir = Pfad, (der Pfad ist der Speicherort des gerade definierten Protokollordners, im Projektordner wird kein Pfad automatisch definiert)
Verwenden Sie dann Google Chrome (nicht 360), um die angegebene URL zu öffnen
Löschen Sie nach dem Ändern des Programms die Datei und wählen Sie dann clearOutput neu starten.
Zeichnung:
tf.summary.scalar ("", w) finde einen Parameter-Skalardiagramm (Änderungsdiagramm)
tf.summary.histogram ("", w) Histogramm
Sie finden die Skalardiagramme von Verlust und Genauigkeit sowie die Skalardiagramme von w und b
Fügen Sie zum Schluss einen Satz hinzu, um alle Zusammenfassungen zusammenzuführen
zusammengeführt = tf.summary.merge_all ()
In with wird sess.run (train_step, feed_dict = {x: batch_xs, y: batch_ys}) geändert in:
Zusammenfassung, _ = sess.run ([zusammengeführt, train_step], feed_dict = {x: batch_xs, y: batch_ys})
writer.add_summary (Zusammenfassung)
二 Schwer
model = Sequential ()
#Erste Ebene (Eingabeebene)
model.add (dicht (input_dim = 28 * 28, output_dim = 500))
model.add (Aktivierung ('sigmoid'))
# 二层
model.add (Dense (output_dim = 500))
model.add (Aktivierung ('sigmoid'))
#Dritte Schicht (Ausgabeebene)
model.add (Dense (output_dim = 10))
model.add (Aktivierung ('softmax'))
# Verlustfunktion und Optimierer
model.compile (loss = 'mse',
Optimierer = SGD (lr = 0,1),
Metriken = ['Genauigkeit'])
#Training
model.fit (x_train, y_train, batch_size = 100, nb_epoch = 20)
#Test
score = model.evaluate (x_text, y_text)
print ('Totalverlust beim Test-Set:', Punktzahl [0])
print ('Genauigkeit des Testsatzes:', Punktzahl [1])
# Prognose anwenden
Ergebnis = model.predict (x_test)