2017-09-26 4 views
0
def trainx(x): 
    train = tf.train.GradientDescentOptimizer(x).minimize(error) 
    return train 

with tf.Session() as sess: 
    for i in [0.01,0.02,0.03, 0.04]: # 
     merge = tf.summary.merge_all() 
     tf.global_variables_initializer().run() 



     writter = tf.summary.FileWriter('4004/'+str(i), sess.graph) 

     for i1 in range(100): 

      error_sum = sess.run(merge, {x:inp, y:out}) 
      writter.add_summary(error_sum, i1) 
      sess.run(trainx(i), {x:inp, y:out}) 

nur übergeben Sie einen Teil des Codes, um die Dinge einfacher zu machen. Bitte schauen Sie auf das Bild unten:sind neue Gewichte für jede Iteration/Lauf in Tensorflow generiert?

enter image description here

Wenn Sie bei etwa 0.310 rote Linie beginnt bei etwa 0.370 und blau zu sehen. Heißt das, das Anfangsgewicht ist nicht für alle Läufe im Tensorflow gleich? Denn wenn dies der Fall wäre, würden alle Zeilen vom selben Punkt aus beginnen, wenn der Gradient decent nach der Fehler/Verlust-Funktion angewendet wird. Ich denke für jede Iteration werden neue Gewichte generiert und das ist nicht das was ich suche. Wie könnte ich das beheben? würde es begrüßen.

+0

Was sind die verschiedenen Linien? – Engineero

+0

@Engineero oh, es ist Verlust/Fehler-Funktion für eine Schicht Netzwerk ... nichts Besonderes. –

+0

Der 'trainx (i)' innerhalb der Schleife erzeugt in jeder Iteration einen neuen 'tf.train.GradientDescentOptimizer' (mit * linear ansteigender Lernrate *). Dies ist wahrscheinlich nicht das beabsichtigte Ergebnis. Erstellen Sie stattdessen einen Optimierer und rufen Sie 'minimize()' einmal außerhalb der Schleife auf und verwenden Sie diese Trainingsoperation innerhalb der Schleife erneut. – mrry

Antwort

Verwandte Themen