Modificare i parametri di ottimizzazione
È il momento di metterti alla prova con l'ottimizzazione. Ora proverai a ottimizzare un modello con un learning rate molto basso, uno molto alto e uno “giusto”. Dopo l’esecuzione dell’esercizio, osserva i risultati ricordando che un valore basso della funzione di loss è positivo.
Per questi esercizi, abbiamo precaricato i valori di predictor e target dai modelli di classificazione precedenti (prevedere chi sarebbe sopravvissuto sul Titanic). È importante che l’ottimizzazione parta da zero ogni volta che cambi il learning rate, per confrontare in modo equo le prestazioni di ciascun valore. Per questo abbiamo creato una funzione get_new_model() che genera un modello non ottimizzato da ottimizzare.
Questo esercizio fa parte del corso
Introduzione al Deep Learning in Python
Istruzioni dell'esercizio
- Importa
SGDdatensorflow.keras.optimizers. - Crea una lista di learning rate con cui provare a ottimizzare, chiamata
lr_to_test. I learning rate devono essere.000001,0.01e1. - Usando un ciclo
forper iterare sulr_to_test:- Usa la funzione
get_new_model()per costruire un nuovo modello non ottimizzato. - Crea un ottimizzatore chiamato
my_optimizerusando il costruttoreSGD()con l'argomento keywordlr=lr. - Compila il modello. Imposta il parametro
optimizersull'oggetto SGD creato sopra e, dato che si tratta di un problema di classificazione, usa'categorical_crossentropy'per il parametroloss. - Addestra il modello usando
predictorsetarget.
- Usa la funzione
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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
____