Ich schrieb ein neurales Netzwerk mit Keras. Es enthält BatchNormalization-Layer.Modell mit BatchNormalisierung: stagnierender Testverlust
Als ich trainierte es mit model.fit
, war alles in Ordnung. Beim Training mit Tensorflow as explained here ist das Training in Ordnung, aber der Validierungsschritt liefert immer eine sehr schlechte Leistung und es sättigt schnell (die Genauigkeit beträgt 5%, 10%, 40%, 40%, 40% ..; der Verlust ist stagniert auch).
Ich brauche Tensorflow, weil es mehr Flexibilität in Bezug auf den Überwachungsteil des Trainings erlaubt.
Ich vermute stark, hat es etwas mit BN-Schichten zu tun, oder/und die Art, wie ich die Testleistungen zu berechnen (siehe unten)
feed_dict = {x: X_valid,
batch_size_placeholder: X_valid.shape[0],
K.learning_phase(): 0,
beta: self.warm_up_schedule(global_step)
}
if self.weights is not None:
feed_dict[weights] = self.weights
acc = accuracy.eval(feed_dict=feed_dict)
Gibt es etwas Besonderes zu tun, wenn die Validierung Genauigkeit eines Modell Rechen enthält Keras BatchNormalizatin Schichten?
Vielen Dank im Voraus!
Nun, eigentlich habe ich mich geirrt, es funktioniert nicht, aber ich verstehe nicht warum – sbaur
Ich lief gerade in ein ähnliches Problem und fand diese Einstellung ng 'training = 1' in' BatchNormalization's '__call__' scheint zu funktionieren. Das Setzen von 'K.learning_phase()' auf 0 oder 1 scheint keinen Einfluss auf die Ausgabe zu haben, was die Batch-Normalisierung betrifft, und solange Sie Ihr Training nicht ausführen, sollten die Batch-Norm-Parameter nicht ' t ändern. – zo7
Sie würden also empfehlen, anstelle von K.learning_phase() einen anderen Platzhalter zu verwenden? – sbaur