Eksperymenty z szerszymi sieciami
Wiesz już wszystko, czego potrzebujesz, żeby zacząć eksperymentować z różnymi modelami!
Model o nazwie model_1 został wcześniej wczytany. Jego podsumowanie możesz zobaczyć w konsoli IPython. To stosunkowo mała sieć – ma zaledwie 10 jednostek w każdej warstwie ukrytej.
W tym ćwiczeniu stworzysz nowy model o nazwie model_2, podobny do model_1, ale z 100 jednostkami w każdej warstwie ukrytej.
Po utworzeniu model_2 oba modele zostaną wytrenowane, a wykres przedstawiający wartość funkcji straty dla każdej epoki zostanie wyświetlony dla obu modeli. Do poleceń trenowania dodano argument verbose=False, aby ograniczyć liczbę wyświetlanych komunikatów – wyniki będziesz analizować graficznie, nie jako tekst.
Ponieważ trenujesz dwa modele, po kliknięciu Uruchom kod wyniki mogą pojawić się z chwilowym opóźnieniem – bądź cierpliwy.
To ćwiczenie jest częścią kursu
Wprowadzenie do uczenia głębokiego w Pythonie
Instrukcje do ćwiczenia
- Stwórz
model_2jako odpowiednikmodel_1, ale użyj100węzłów zamiast10dla pierwszych dwóch warstwDensez aktywacją'relu'. Dla wyjściowej warstwyDenseużyj2węzłów i aktywacji'softmax'. - Skompiluj
model_2tak samo jak poprzednie modele: użyj'adam'jakooptimizer,'categorical_crossentropy'jako funkcji straty orazmetrics=['accuracy']. - Kliknij Prześlij odpowiedź, aby wytrenować oba modele i sprawdzić graficznie, który z nich daje lepsze wyniki! Zwróć uwagę na argument
verbose=Falsewmodel.fit()– ogranicza on liczbę wyświetlanych komunikatów, ponieważ modele będziesz oceniać na podstawie wykresów, a nie tekstu.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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()