Експерименти з ширшими мережами
Тепер ви знаєте все необхідне, щоб почати експериментувати з різними моделями!
Модель під назвою model_1 уже завантажено. Ви можете побачити її зведення (summary) в оболонці IPython. Це відносно невелика мережа, з лише 10 одиницями в кожному прихованому шарі.
У цій вправі ви створите нову модель model_2, схожу на model_1, але з 100 одиницями в кожному прихованому шарі.
Після створення model_2 обидві моделі буде навчено, і з'явиться графік, що показує значення функції втрат для обох моделей на кожній епосі. Ми додали аргумент verbose=False у команди навчання, щоб виводити менше оновлень, адже ви розглядатимете їх на графіку, а не як текст.
Оскільки навчаються дві моделі, після натискання запуску знадобиться трохи часу, щоб побачити результати, тож наберіться терпіння.
Ця вправа є частиною курсу
Вступ до Deep Learning у Python
Інструкції до вправи
- Створіть
model_2, відтворившиmodel_1, але використайте100вузлів замість10для перших двох шарівDenseз активацією'relu'. Для вихідного шаруDenseвикористайте2вузли з активацією'softmax'. - Скомпілюйте
model_2, як і попередні моделі: використайте'adam'якoptimizer,'categorical_crossentropy'як функцію втрат (loss) і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()