Po półtora roku wracam do mojej odpowiedzi, ponieważ moja poprzednia odpowiedź była błędna.
Wielkość partii ma znaczący wpływ na naukę. Po przełożeniu partii przez sieć następuje uśrednienie gradientów. Pomysł polega na tym, że jeśli rozmiar partii jest wystarczająco duży, zapewni to wystarczająco stabilne oszacowanie gradientu pełnego zestawu danych. Pobierając próbki ze zbioru danych, oceniasz gradient, jednocześnie znacznie obniżając koszty obliczeniowe. Im niżej zejdziesz, tym mniej dokładne będzie twoje oszacowanie, jednak w niektórych przypadkach te głośne gradienty mogą pomóc uniknąć lokalnych minimów. Gdy jest zbyt niska, waga sieci może po prostu przeskakiwać, jeśli dane są hałaśliwe i może nie być w stanie się uczyć lub zbiega się bardzo powoli, co negatywnie wpływa na całkowity czas obliczeń.
Kolejną zaletą przetwarzania wsadowego jest obliczanie GPU, procesory graficzne są bardzo dobre w równoległym wykonywaniu obliczeń w sieciach neuronowych, jeśli część obliczeń jest taka sama (na przykład powtarzane mnożenie macierzy przez tę samą macierz wagową twojej sieci). Oznacza to, że wielkość partii 16 zajmie mniej niż dwukrotność wielkości partii 8.
W przypadku, gdy potrzebujesz większych rozmiarów partii, ale nie zmieści się ona na twoim GPU, możesz nakarmić małą partię, zapisać szacunkowe gradienty i nakarmić jedną lub więcej partii, a następnie wykonać aktualizację wagi. W ten sposób uzyskasz bardziej stabilny gradient, ponieważ zwiększyłeś swój wirtualny rozmiar partii.
ŹLE, STARA ODPOWIEDŹ: [[[Nie, rozmiar partii średnio wpływa tylko na szybkość uczenia się, a nie na jakość uczenia się. Batch_sizes również nie musi być potęgami 2, chociaż rozumiem, że niektóre pakiety pozwalają tylko na potęgi 2. Powinieneś spróbować uzyskać swój batch_size możliwie najwyższy, który wciąż mieści się w pamięci twojego GPU, aby uzyskać maksymalną możliwą prędkość .]]]]