Experimenteren met bredere netwerken
Nu weet je alles wat je nodig hebt om met verschillende modellen te gaan experimenteren!
Een model genaamd model_1 is alvast geladen. In de IPython-shell zie je een samenvatting van dit model. Dit is een relatief klein netwerk, met slechts 10 units in elke verborgen laag.
In deze oefening maak je een nieuw model, model_2, dat lijkt op model_1, behalve dat het 100 units in elke verborgen laag heeft.
Nadat je model_2 hebt gemaakt, worden beide modellen getraind en verschijnt er een grafiek die voor elk epoch de verliesscore van beide modellen toont. We hebben het argument verbose=False toegevoegd aan de fit-opdrachten om minder updates te printen, omdat je hier grafisch naar kijkt in plaats van als tekst.
Omdat je twee modellen traint, duurt het even voordat je de Resultaten ziet nadat je op uitvoeren hebt gedrukt, dus heb een beetje geduld.
Deze oefening maakt deel uit van de cursus
Introductie tot Deep Learning in Python
Oefeninstructies
- Maak
model_2ommodel_1te repliceren, maar gebruik100nodes in plaats van10voor de eerste tweeDense-lagen die je toevoegt met de'relu'-activatie. Gebruik2nodes voor deDense-uitvoerlaag met'softmax'alsactivation. - Compileer
model_2zoals je bij eerdere modellen hebt gedaan: met'adam'alsoptimizer,'categorical_crossentropy'voor de loss, enmetrics=['accuracy']. - Klik op "Antwoord verzenden" om beide modellen te trainen en te zien welke betere resultaten geeft! Let op het keywordargument
verbose=Falseinmodel.fit(): dit print minder updates, omdat je de modellen grafisch beoordeelt in plaats van via tekst.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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()