Wie man mit TensorFlow stabile Ergebnisse erzielt, indem man zufällige Seeds einstellt

Ich versuche, ein neuronales Netzwerk mehrmals mit verschiedenen Parametern auszuführen, um die Netzwerkparameter (Ausfallwahrscheinlichkeiten, Lernrate e.d.) zu kalibrieren. Ich habe jedoch das Problem, dass das Ausführen des Netzwerks unter Beibehaltung der gleichen Parameter zu einer anderen Lösung führt, wenn ich das Netzwerk in einer Schleife wie folgt ausführe:

filename = create_results_file()
for i in range(3):
  g = tf.Graph()
  with g.as_default():
    accuracy_result, average_error = network.train_network(
        parameters, inputHeight, inputWidth, inputChannels, outputClasses)
    f, w = get_csv_writer(filename)
    w.writerow([accuracy_result, "did run %d" % i, average_error])
    f.close()

Ich verwende den folgenden Code zu Beginn meiner train_network-Funktion, bevor ich die Layer- und Fehlerfunktion meines Netzwerks einrichte:

np.random.seed(1)
tf.set_random_seed(1)

Ich habe auch versucht, diesen Code vor der Erstellung des TensorFlow-Diagramms hinzuzufügen, aber in meiner Ergebnisausgabe werden immer wieder andere Lösungen angezeigt.

Ich verwende einen AdamOptimizer und initialisiere die Netzwerkgewichte mittf.truncated_normal. Zusätzlich benutze ichnp.random.permutation, um die eingehenden Bilder für jede Epoche zu mischen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage