wake-up-neo.com

Was ist eine Charge in TensorFlow?

Die einleitende Dokumentation, die ich lese ( Inhaltsverzeichnis hier ), führt den Begriff hier ein, ohne ihn definiert zu haben.

[1] https://www.tensorflow.org/get_started/
[2] https://www.tensorflow.org/tutorials/mnist/tf/

Angenommen, Sie möchten die Ziffernerkennung (MNIST) durchführen und haben Ihre Architektur des Netzwerks (CNNs) definiert. Jetzt können Sie die Bilder einzeln aus den Trainingsdaten in das Netzwerk einspeisen, die Vorhersage abrufen (bis zu diesem Schritt heißt es Inferenz), den Verlust berechnen, den Gradienten berechnen, und aktualisieren Sie dann die Parameter Ihres Netzwerks (dh Gewichte und Verzerrungen) und fahren Sie dann mit dem nächsten Bild fort ... Diese Art, das Modell zu trainieren, ist manchmal genannt als Online-Lernen.

Sie möchten jedoch, dass das Training schneller und die Farbverläufe leiser werden und dass die Leistung von GPUs genutzt wird, die Array-Operationen effizient ausführen ( nD-Arrays um genau zu sein). . Sie geben also stattdessen 100 Bilder gleichzeitig ein (die Wahl dieser Größe liegt bei Ihnen (dh es ist ein hyperparameter =) und hängt auch von deinem Problem ab). Schauen Sie sich zum Beispiel das folgende Bild an (Autor: Martin Gorner)

Batch size of 100

Da Sie gleichzeitig 100 Bilder (28x28) Einspeisen (anstelle von 1 wie im Online-Schulungsfall), beträgt die Stapelgröße 100 . . Häufig wird dies als Mini-Batch-Größe oder einfach als mini-batch Bezeichnet.


Auch das folgende Bild: (Autor: Martin Gorner)

batch size again

Jetzt wird die Matrixmultiplikation allesamt einwandfrei funktionieren und Sie werden auch die hochoptimierten Array-Operationen nutzen und somit eine schnellere Training Zeit erreichen.

Wenn Sie das obige Bild beobachten, spielt es keine Rolle, ob Sie 100 oder 256 oder 2048 oder 10000 ( Batch-Größe) Bilder geben, solange es in den Speicher Ihrer (GPU) passt ) Hardware. Sie werden einfach so viele Vorhersagen bekommen.

Beachten Sie jedoch, dass dies Batchgröße die Trainingszeit, den erzielten Fehler, die Gradientenverschiebung usw. beeinflusst. Es gibt keine allgemeine Faustregel, welche Batchgröße funktioniert Beste. Probieren Sie einfach ein paar Größen aus und wählen Sie diejenige aus, die am besten zu Ihnen passt. Versuchen Sie jedoch, keine großen Chargengrößen zu verwenden, da dies die Daten überfüllt. Üblicherweise werden Kleinseriengrößen von 32, 64, 128, 256, 512, 1024, 2048 Verwendet.


Bonus : Um zu verstehen, wie verrückt Sie mit dieser Batch-Größe umgehen können, lesen Sie bitte Folgendes: seltsamer Trick zum Parallelisieren von CNNs

46
kmario23