Nach eineinhalb Jahren komme ich zu meiner Antwort zurück, weil meine vorherige Antwort falsch war.
Die Stapelgröße beeinflusst das Lernen erheblich. Wenn Sie einen Stapel über Ihr Netzwerk übertragen, werden die Gradienten gemittelt. Das Konzept ist, dass bei einer ausreichend großen Stapelgröße eine ausreichend stabile Schätzung des Gradienten des vollständigen Datensatzes möglich ist. Indem Sie Stichproben aus Ihrem Datensatz entnehmen, schätzen Sie den Gradienten und senken gleichzeitig die Rechenkosten erheblich. Je niedriger Sie gehen, desto ungenauer ist Ihre Schätzung. In einigen Fällen können diese lauten Verläufe jedoch tatsächlich dazu beitragen, lokalen Minima zu entkommen. Wenn der Wert zu niedrig ist, können Ihre Netzwerkgewichte einfach herumspringen, wenn Ihre Daten verrauscht sind und möglicherweise nicht gelernt werden können oder wenn sie sehr langsam konvergieren, was sich negativ auf die Gesamtberechnungszeit auswirkt.
Ein weiterer Vorteil der Stapelverarbeitung ist die GPU-Berechnung. GPUs können die Berechnungen in neuronalen Netzen sehr gut parallelisieren, wenn ein Teil der Berechnung identisch ist (z. B. wiederholte Matrixmultiplikation über dieselbe Wichtungsmatrix Ihres Netzwerks). Dies bedeutet, dass eine Losgröße von 16 weniger als das Doppelte einer Losgröße von 8 benötigt.
Für den Fall, dass Sie größere Chargen benötigen, diese jedoch nicht auf Ihre GPU passen, können Sie eine kleine Charge füttern, die Gradientenschätzungen speichern und eine oder mehrere Chargen füttern und anschließend eine Gewichtsaktualisierung durchführen. Auf diese Weise erhalten Sie einen stabileren Verlauf, da Sie die Größe Ihres virtuellen Stapels erhöht haben.
FALSCHE ALTE ANTWORT: [[[Nein, die Batch-Größe beeinflusst im Durchschnitt nur die Geschwindigkeit Ihres Lernens, nicht die Qualität des Lernens. Die batch_sizes müssen auch keine Potenzen von 2 sein, obwohl ich verstehe, dass bestimmte Pakete nur Potenzen von 2 zulassen. Sie sollten versuchen, Ihre batch_size so hoch wie möglich zu setzen, um die maximal mögliche Geschwindigkeit zu erreichen .]]]]