Zmiana parametrów optymalizacji
Czas wziąć się do pracy i pobawić się optymalizacją. Sprawdzisz teraz, jak model zachowuje się przy bardzo niskim, bardzo wysokim i „odpowiednim" współczynniku uczenia. Po uruchomieniu ćwiczenia warto przyjrzeć się wynikom – pamiętaj, że niska wartość funkcji straty to dobry znak.
Na potrzeby tego ćwiczenia wczytaliśmy wcześniej dane wejściowe i wartości docelowe z poprzednich modeli klasyfikacji (przewidujących, kto przeżył katastrofę Titanica). Aby uczciwie porównać różne współczynniki uczenia, optymalizacja powinna zaczynać się od zera przy każdej zmianie tego współczynnika. Dlatego przygotowaliśmy funkcję get_new_model(), która tworzy nowy, nieoptymalizowany model.
To ćwiczenie jest częścią kursu
Wprowadzenie do uczenia głębokiego w Pythonie
Instrukcje do ćwiczenia
- Zaimportuj
SGDztensorflow.keras.optimizers. - Utwórz listę współczynników uczenia do przetestowania o nazwie
lr_to_test. Powinna zawierać wartości.000001,0.01i1. - Używając pętli
fordo iteracji polr_to_test:- Użyj funkcji
get_new_model(), aby zbudować nowy, nieoptymalizowany model. - Utwórz optymalizator o nazwie
my_optimizer, używając konstruktoraSGD()z argumentem kluczowymlr=lr. - Skompiluj model. Ustaw parametr
optimizerna obiekt SGD utworzony powyżej, a ponieważ jest to problem klasyfikacji, użyj'categorical_crossentropy'dla parametruloss. - Dopasuj model, używając
predictorsitarget.
- Użyj funkcji
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Import the SGD optimizer
____
# Create list of learning rates: lr_to_test
lr_to_test = ____
# Loop over learning rates
for lr in lr_to_test:
print('\n\nTesting model with learning rate: %f\n'%lr )
# Build new model to test, unaffected by previous models
model = ____
# Create SGD optimizer with specified learning rate: my_optimizer
my_optimizer = ____
# Compile the model
____
# Fit the model
____