Optimalisatieparameters aanpassen
Tijd om zelf met optimalisatie aan de slag te gaan. Je gaat nu een model optimaliseren met een heel lage learning rate, een heel hoge learning rate en een “net goed” learning rate. Bekijk na het uitvoeren van deze oefening de resultaten en onthoud: een lage waarde voor de loss-functie is goed.
Voor deze oefeningen hebben we de predictors en target-waarden uit je eerdere classificatiemodellen (voorspellen wie de Titanic zou overleven) alvast ingeladen. Je wilt dat de optimalisatie telkens vanaf nul start wanneer je de learning rate verandert, zodat je eerlijk kunt vergelijken hoe elke learning rate presteerde in je resultaten. Daarom hebben we een functie get_new_model() gemaakt die een niet-geoptimaliseerd model aanmaakt om te optimaliseren.
Deze oefening maakt deel uit van de cursus
Introductie tot Deep Learning in Python
Oefeninstructies
- Importeer
SGDuittensorflow.keras.optimizers. - Maak een lijst met learning rates om mee te optimaliseren,
lr_to_testgenaamd. De learning rates daarin moeten.000001,0.01en1zijn. - Gebruik een
for-lus om overlr_to_testte itereren:- Gebruik de functie
get_new_model()om een nieuw, niet-geoptimaliseerd model te bouwen. - Maak een optimizer
my_optimizermet de constructorSGD()met het keywordargumentlr=lr. - Compileer je model. Zet de parameter
optimizerop het zojuist gemaakte SGD-object en gebruik, omdat dit een classificatieprobleem is,'categorical_crossentropy'voor de parameterloss. - Train (fit) je model met
predictorsentarget.
- Gebruik de functie
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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
____