So legen Sie die Schritte batch_size, steps_per epoch und validation fest

26

Ich fange an, CNNs mit Keras zu lernen. Ich benutze das Theano-Backend.

Ich verstehe nicht, wie man Werte setzt auf:

  • batch_size,
  • schritte pro epoche,
  • Validierungsschritte.

Auf welchen Wert sollten die batch_sizeSchritte pro Epoche und die Validierungsschritte eingestellt werden, wenn 240.000 Stichproben im Trainingssatz und 80.000 im Testsatz vorhanden sind?

Ermene
quelle
Was sind Ihre Hardware-Spezifikationen? Es hängt davon ab, dass die Leute im Allgemeinen eine Stapelgröße von 32/64 verwenden, Epochen von 10 bis 15, und dann können Sie Schritte pro Epoche aus den oben genannten Werten berechnen.
Aditya

Antworten:

28
  • batch_size bestimmt die Anzahl der Proben in jeder Mini-Charge. Das Maximum ist die Anzahl aller Samples, wodurch die Gradientenabsenkung genau wird. Der Verlust nimmt in Richtung Minimum ab, wenn die Lernrate klein genug ist, die Iterationen jedoch langsamer sind. Sein Minimum ist 1, was zu einem stochastischen Gradientenabstieg führt: Schnell, aber die Richtung des Gradientenschritts basiert nur auf einem Beispiel, der Verlust kann herumspringen. batch_size ermöglicht die Anpassung zwischen den beiden Extremen: genaue Gradientenrichtung und schnelle Iteration. Außerdem kann der Maximalwert für batch_size begrenzt sein, wenn Ihr Modell + Datensatz nicht in den verfügbaren Speicher (GPU) passt.
  • steps_per_epoch Die Anzahl der Batch-Iterationen, bevor eine Trainingsepoche als beendet betrachtet wird. Wenn Sie einen Trainingssatz mit fester Größe haben, können Sie ihn ignorieren. Dies kann jedoch nützlich sein, wenn Sie einen großen Datensatz haben oder wenn Sie spontan zufällige Datenerweiterungen generieren, dh wenn Ihr Trainingssatz eine (generierte) unendliche Größe hat. Wenn Sie die Zeit haben, Ihren gesamten Trainingsdatensatz durchzugehen, empfehle ich, diesen Parameter zu überspringen.
  • validation_steps ähnlich steps_per_epoch, jedoch mit dem Validierungsdatensatz anstelle der Trainingsdaten. Wenn Sie Zeit haben, Ihren gesamten Validierungsdatensatz durchzugehen, empfehle ich, diesen Parameter zu überspringen.
Silpion
quelle
Was meinst du mit "diesen Parameter überspringen"? Wenn ich den Parameter entferne, erhalte ich When using data tensors as input to a model, you should specify the steps_per_epoch argument.
Nicolas Raoul
Laut Dokumentation hat der Parameter steps_per_epoch der Methode fit einen Standardwert und sollte daher optional sein: "Der Standardwert None entspricht der Anzahl der Proben in Ihrem Datensatz geteilt durch die Chargengröße oder 1, wenn dies nicht bestimmt werden kann." Quelle: keras.io/models/model
Silpion
1

Es gibt eine Antwort in Github

  1. model.fit_generator erfordert, dass der Eingabedatensatz-Generator unendlich ausgeführt wird.
  2. steps_per_epochwird verwendet , um den gesamten Datensatz zu erzeugen , einmal durch den Generator Aufruf steps_per_epochmal
  3. während epochsgibt an , wie oft das Modell über den gesamten Datensatz trainiert.
Hong Cheng
quelle