Sperimentare con reti più larghe
Ora hai tutto ciò che ti serve per iniziare a sperimentare con modelli diversi!
Un modello chiamato model_1 è stato pre-caricato. Puoi vedere un riepilogo di questo modello stampato nella IPython Shell. È una rete relativamente piccola, con solo 10 unità in ciascun livello nascosto.
In questo esercizio creerai un nuovo modello chiamato model_2, simile a model_1, ma con 100 unità in ciascun livello nascosto.
Dopo aver creato model_2, entrambi i modelli verranno addestrati e verrà mostrato un grafico con il valore della loss di entrambi i modelli a ogni epoca. Abbiamo aggiunto l’argomento verbose=False nei comandi di training per stampare meno aggiornamenti, dato che li osserverai graficamente invece che come testo.
Poiché stai addestrando due modelli, ci vorrà un momento per vedere i risultati dopo aver premuto esegui: abbi pazienza.
Questo esercizio fa parte del corso
Introduzione al Deep Learning in Python
Istruzioni dell'esercizio
- Crea
model_2per replicaremodel_1, ma usa100nodi invece di10per i primi due livelliDenseche aggiungi con attivazione'relu'. Usa2nodi per il livello di outputDensecon'softmax'comeactivation. - Compila
model_2come fatto per i modelli precedenti: usa'adam'comeoptimizer,'categorical_crossentropy'per la loss emetrics=['accuracy']. - Premi "Invia risposta" per addestrare entrambi i modelli e visualizzare quale dà risultati migliori! Nota l’argomento keyword
verbose=Falseinmodel.fit(): stampa meno aggiornamenti, perché valuterai i modelli graficamente invece che tramite testo.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# Define early_stopping_monitor
early_stopping_monitor = EarlyStopping(patience=2)
# Create the new model: model_2
model_2 = ____
# Add the first and second layers
____.____(____(____, ____=____, input_shape=input_shape))
____
# Add the output layer
____
# Compile model_2
____
# Fit model_1
model_1_training = model_1.fit(predictors, target, epochs=15, validation_split=0.2, callbacks=[early_stopping_monitor], verbose=False)
# Fit model_2
model_2_training = model_2.fit(predictors, target, epochs=15, validation_split=0.2, callbacks=[early_stopping_monitor], verbose=False)
# Create the plot
plt.plot(model_1_training.history['val_loss'], 'r', model_2_training.history['val_loss'], 'b')
plt.xlabel('Epochs')
plt.ylabel('Validation score')
plt.show()