Эксперименты с более широкими сетями
Теперь у вас есть всё необходимое, чтобы начать экспериментировать с различными моделями!
Модель model_1 уже загружена. Её сводку можно посмотреть в IPython Shell. Это относительно небольшая сеть: в каждом скрытом слое по 10 нейронов.
В этом упражнении вы создадите новую модель model_2, похожую на model_1, но с 100 нейронами в каждом скрытом слое.
После создания model_2 обе модели будут обучены, и вы увидите график, на котором отображается значение функции потерь для каждой модели на каждой эпохе. В командах обучения мы указали аргумент verbose=False, чтобы сократить количество выводимых сообщений: результаты удобнее оценивать визуально.
Поскольку обучаются две модели, после нажатия кнопки запуска потребуется немного подождать — наберитесь терпения.
Это упражнение является частью курса
Введение в глубокое обучение на Python
Инструкции к упражнению
- Создайте
model_2по образцуmodel_1, но используйте100нейронов вместо10для первых двух слоёвDenseс активацией'relu'. Для выходного слояDenseукажите2нейрона и активацию'softmax'. - Скомпилируйте
model_2так же, как предыдущие модели: оптимизатор'adam', функция потерь'categorical_crossentropy', параметрmetrics=['accuracy']. - Нажмите «Отправить ответ», чтобы обучить обе модели и визуально сравнить их результаты! Обратите внимание на именованный аргумент
verbose=Falseвmodel.fit(): он уменьшает количество выводимых сообщений, так как оценивать модели вы будете по графику, а не по тексту.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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()