Die Vorhersage hängt von der Chargengröße in Keras ab

8

Ich versuche Keras für die binäre Klassifizierung eines Bildes zu verwenden.

Mein CNN-Modell ist gut in den Trainingsdaten geschult (mit einer Trainingsgenauigkeit von ~ 90% und einer Validierungsgenauigkeit von ~ 93%). Aber während des Trainings, wenn ich die Stapelgröße = 15000 einstelle, bekomme ich die Abbildung I Ausgabe und wenn ich die Stapelgröße = 50000 einstelle, bekomme ich Abbildung II als Ausgabe. Kann mir bitte jemand sagen was falsch ist? Die Vorhersage sollte nicht von der Batch-Größe abhängen, oder?

Code, den ich für die Vorhersage verwende:

y=model.predict_classes(patches, batch_size=50000,verbose=1) y=y.reshape((256,256))

Mein Modell: -

%Vor%     
Avijit Dasgupta 25.05.2016, 06:48
quelle

1 Antwort

4

Keras ist standardisierter Eingang automatisch in der Funktion predict . Die für die Standardisierung erforderlichen Statistiken werden für einen Stapel berechnet. Aus diesem Grund können Ihre Ausgaben von einer Stapelgröße abhängen. Sie können dies lösen durch:

  1. Wenn Keras & gt; 1.0 Sie könnten einfach Ihr Modell in der funktionalen API definieren und einfach eine trainierte Funktion auf selbststandardisierte Daten anwenden.
  2. Wenn Sie Ihr Modell trainiert haben, können Sie es als Theano-Funktion wiederherstellen und auch auf selbststandardisierte Daten anwenden.
  3. Wenn Ihre Daten nicht sehr groß sind, können Sie die Stapelgröße auch auf die Anzahl der Beispiele in Ihrem Dataset festlegen.

UPDATE: Hier ist ein Code für die zweite Lösung:

%Vor%

Wenn Sie nun dieses neue theano_model verwenden möchten, sollten Sie den Hauptdatensatz selbst standardisieren (z. B. durch Subtrahieren des Mittelwerts und Division durch Standardabweichung für jedes Pixel in Ihrem Bild) und theano_model anwenden, um die Ergebnisse für einen ganzen Datensatz zu erhalten (Sie könnten dies in einer Schleife tun, die über Beispiele iteriert oder numpy.apply_along_axis oder numpy.apply_over_axes -Funktionen verwendet).

UPDATE 2: , damit diese Lösung funktioniert.

%Vor%

zu:

%Vor%     
Marcin Możejko 25.05.2016 14:17
quelle