Early stopping: ottimizzare l'ottimizzazione
Ora che sai come monitorare le prestazioni del modello durante l'ottimizzazione, puoi usare l'early stopping per interrompere l'ottimizzazione quando non sta più aiutando. Poiché l'ottimizzazione si ferma automaticamente quando non porta benefici, puoi anche impostare un valore alto per epochs nella chiamata a .fit(), come Dan ha mostrato nel video.
Il modello che ottimizzerai è stato definito come model. Come prima, i dati sono già caricati in predictors e target.
Questo esercizio fa parte del corso
Introduzione al Deep Learning in Python
Istruzioni dell'esercizio
- Importa
EarlyStoppingdatensorflow.keras.callbacks. - Compila il modello, ancora una volta usando
'adam'comeoptimizer,'categorical_crossentropy'come funzione di perdita emetrics=['accuracy']per visualizzare l'accuratezza a ogni epoca. - Crea un oggetto
EarlyStoppingchiamatoearly_stopping_monitor. Interrompi l'ottimizzazione quando la perdita di validazione non è migliorata per 2 epoche specificandopatience=2inEarlyStopping(). - Addestra il modello usando
predictorsetarget. Impostaepochsa30e usa una validation split di0.3. Inoltre, passa[early_stopping_monitor]al parametrocallbacks.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# Import EarlyStopping
____
# Save the number of columns in predictors: n_cols
n_cols = predictors.shape[1]
input_shape = (n_cols,)
# Specify the model
model = Sequential()
model.add(Dense(100, activation='relu', input_shape = input_shape))
model.add(Dense(100, activation='relu'))
model.add(Dense(2, activation='softmax'))
# Compile the model
____
# Define early_stopping_monitor
early_stopping_monitor = ____
# Fit the model
____