Grundlegende Verwendung von TensorFlow und Keras

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)

Veröffentlicht 59 Originalartikel · Likes46 · Besuche 30.000+

Ich denke du magst

Origin blog.csdn.net/sinat_41852207/article/details/105479320
Empfohlen
Rangfolge