Używam Python Keras package
do sieci neuronowej. To jest link . Czy batch_size
jest równa liczbie próbek testowych? Z Wikipedii mamy tę informację:
Jednak w innych przypadkach ocena gradientu sumy może wymagać kosztownej oceny gradientów ze wszystkich funkcji sumowania. Gdy zestaw treningowy jest ogromny i nie istnieją proste formuły, ocena sum gradientów staje się bardzo kosztowna, ponieważ ocena gradientu wymaga oceny gradientów wszystkich funkcji sumowania. Aby zaoszczędzić na koszcie obliczeniowym przy każdej iteracji, gradient stochastyczny pobiera próbki podzbioru funkcji sumowania na każdym etapie. Jest to bardzo skuteczne w przypadku problemów z uczeniem maszynowym na dużą skalę.
Powyższe informacje opisują dane testowe? Czy to samo co batch_size
w keras (liczba próbek na aktualizację gradientu)?
źródło
Odpowiedzi:
Rozmiar partii określa liczbę próbek, które będą propagowane przez sieć.
Załóżmy na przykład, że masz 1050 próbek treningowych i chcesz ustawić wartość
batch_size
równą 100. Algorytm pobiera pierwsze 100 próbek (od 1 do 100) ze zbioru danych szkoleniowych i trenuje sieć. Następnie pobiera drugie 100 próbek (od 101 do 200) i ponownie trenuje sieć. Możemy kontynuować tę procedurę, dopóki nie rozpowszechnimy wszystkich próbek w sieci. Problem może wystąpić z ostatnim zestawem próbek. W naszym przykładzie użyliśmy 1050, którego nie można podzielić przez 100 bez reszty. Najprostszym rozwiązaniem jest pobranie 50 ostatnich próbek i wyszkolenie sieci.Zalety stosowania wielkości partii <liczba wszystkich próbek:
Wymaga mniej pamięci. Ponieważ trenujesz sieć przy użyciu mniejszej liczby próbek, ogólna procedura szkolenia wymaga mniej pamięci. Jest to szczególnie ważne, jeśli nie jesteś w stanie zmieścić całego zestawu danych w pamięci komputera.
Zazwyczaj sieci trenują szybciej dzięki mini-partiom. To dlatego, że aktualizujemy wagi po każdej propagacji. W naszym przykładzie rozpropagowaliśmy 11 partii (10 z nich miało 100 próbek, a 1 miał 50 próbek), a po każdej z nich zaktualizowaliśmy parametry naszej sieci. Gdybyśmy użyli wszystkich próbek podczas propagacji, dokonalibyśmy tylko 1 aktualizacji parametru sieci.
Wady korzystania z wielkości partii <liczba wszystkich próbek:
Stochastic jest tylko mini-partią o wartości
batch_size
równej 1. W takim przypadku gradient zmienia kierunek nawet częściej niż gradient mini-partii.źródło
Keras
? w każdym razie, aby ustawić dane testowe w tym pakiecie?MATLAB
ale znalazłem tu tylko zestawy danych dotyczące pociągu i sprawdzania poprawności. Myślę, że tutaj w tym zestawie zestaw danych do sprawdzania poprawności jest taki sam, jak dane testowe, ale nie ma wczesnego zatrzymywania, więc nie mamy żadnych prawdziwych danych do sprawdzania poprawności.batch_size=1
. Ideą uczenia się online jest aktualizacja modelu, gdy tylko zobaczysz przykład. Przy większym rozmiarze partii oznacza to, że najpierw przeglądasz wiele próbek przed wykonaniem aktualizacji. W RNN wielkość partii może mieć różne znaczenia. Zwykle dzielenie sekwencji treningowej na okno o stałym rozmiarze (np. 10 słów) jest powszechne. W tym przypadku uwzględnienie 100 takich okien podczas szkolenia oznacza, że maszbatch_size=100
.W terminologii sieci neuronowej:
Przykład: jeśli masz 1000 przykładów treningu, a twoja partia to 500, to zajmie 2 iteracje, aby ukończyć 1 epokę.
FYI: Kompromis między wielkością partii a liczbą iteracji w celu trenowania sieci neuronowej
źródło
Podczas rozwiązywania problemu z procesorem przy optymalizacji procesora iteracyjnie stosuje się algorytm do niektórych danych wejściowych. W każdej z tych iteracji zwykle aktualizujesz Metrykę problemu, wykonując kilka obliczeń na danych. Teraz, gdy rozmiar twoich danych jest duży, ukończenie każdej iteracji może wymagać dużo czasu i może pochłonąć wiele zasobów. Czasami więc decydujesz się na zastosowanie tych iteracyjnych obliczeń na części danych, aby zaoszczędzić czas i zasoby obliczeniowe. Ta część jest wielkością partii i proces ten nazywany jest (w Neuron Network Lingo) przetwarzaniem danych wsadowych. Kiedy zastosujesz swoje obliczenia do wszystkich swoich danych, następnie wykonasz przetwarzanie danych online. Myślę, że terminologia pochodzi z lat 60., a nawet wcześniej. Czy ktoś pamięta. pliki bat DOS? Ale oczywiście wcielona koncepcja oznacza wątek lub część danych, które mają być użyte.
źródło
Dokumentacja na
Keras
temat wielkości partii można znaleźć wfit
funkcji w modelach (funkcjonalny API) stronaJeśli masz mały zestaw danych, najlepiej byłoby, aby wielkość partii była równa wielkości danych szkolenia. Najpierw spróbuj małej partii, a następnie zwiększ, aby zaoszczędzić czas. Jak wspomniano itdxer , istnieje kompromis między dokładnością a prędkością.
źródło