Dodawanie warstw do sieci
Wiesz już, jak eksperymentować z szerszymi sieciami. W tym ćwiczeniu wypróbujesz głębszą sieć – z większą liczbą ukrytych warstw.
Punktem wyjścia jest gotowy model bazowy o nazwie model_1. Ma on 1 ukrytą warstwę z 10 jednostkami. Podsumowanie struktury tego modelu jest wyświetlone poniżej. Zbudujesz podobną sieć, ale z 3 ukrytymi warstwami (każda nadal z 10 jednostkami).
Dopasowanie obu modeli zajmie chwilę – po uruchomieniu kodu poczekaj kilka sekund na wyniki.
To ćwiczenie jest częścią kursu
Wprowadzenie do uczenia głębokiego w Pythonie
Instrukcje do ćwiczenia
- Zdefiniuj model o nazwie
model_2, który jest podobny domodel_1, ale zamiast 1 ukrytej warstwy ma 3 ukryte warstwy po 10 jednostek.- Użyj
input_shape, aby określić kształt wejścia w pierwszej ukrytej warstwie. - Zastosuj aktywację
'relu'dla 3 ukrytych warstw i'softmax'dla warstwy wyjściowej, która powinna mieć 2 jednostki.
- Użyj
- Skompiluj
model_2tak samo jak poprzednie modele: użyj'adam'jakooptimizer,'categorical_crossentropy'jako funkcji straty orazmetrics=['accuracy']. - Kliknij Prześlij odpowiedź, aby dopasować oba modele i zobaczyć, który daje lepsze wyniki!
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# The input shape to use in the first hidden layer
input_shape = (n_cols,)
# Create the new model: model_2
model_2 = ____
# Add the first, second, and third hidden layers
____
____
____
# Add the output layer
____
# Compile model_2
____
# Fit model 1
model_1_training = model_1.fit(predictors, target, epochs=15, validation_split=0.4, verbose=False)
# Fit model 2
model_2_training = model_2.fit(predictors, target, epochs=15, validation_split=0.4, 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()