Ранняя остановка: оптимизация оптимизации
Теперь, когда вы умеете отслеживать качество модели в процессе оптимизации, можно использовать раннюю остановку, чтобы прекращать обучение, когда оно перестаёт давать результат. Поскольку оптимизация останавливается автоматически при отсутствии прогресса, можно смело задавать большое значение epochs в вызове .fit(), как Дэн показал в видео.
Модель для оптимизации уже задана как model. Данные, как и прежде, предварительно загружены в переменные predictors и target.
Это упражнение является частью курса
Введение в глубокое обучение на Python
Инструкции к упражнению
- Импортируйте
EarlyStoppingизtensorflow.keras.callbacks. - Скомпилируйте модель, снова используя
'adam'в качествеoptimizer,'categorical_crossentropy'в качестве функции потерь иmetrics=['accuracy'], чтобы отслеживать точность на каждой эпохе. - Создайте объект
EarlyStoppingс именемearly_stopping_monitor. Настройте остановку обучения, если валидационная функция потерь не улучшается в течение 2 эпох: для этого задайте параметруpatienceобъектаEarlyStopping()значение2. - Обучите модель на данных
predictorsиtarget. Задайте количествоepochsравным30и долю валидационной выборки0.3. Кроме того, передайте[early_stopping_monitor]в параметрcallbacks.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Import EarlyStopping
____
# Save the number of columns in predictors: n_cols
n_cols = predictors.shape[1]
input_shape = (n_cols,)
# Specify the model
model = Sequential()
model.add(Dense(100, activation='relu', input_shape = input_shape))
model.add(Dense(100, activation='relu'))
model.add(Dense(2, activation='softmax'))
# Compile the model
____
# Define early_stopping_monitor
early_stopping_monitor = ____
# Fit the model
____