Многократное обновление весов
Теперь вы выполните несколько итераций обновления весов, чтобы значительно улучшить модель и увидеть, как с каждым шагом улучшаются предсказания.
Для удобства в среду заранее загружена функция get_slope(), которая принимает аргументы input_data, target и weights. Также доступна функция get_mse(), которая принимает те же аргументы. Переменные input_data, target и weights тоже заранее загружены.
Эта сеть не имеет скрытых слоёв и передаёт данные напрямую от входного слоя (с 3 узлами) к выходному узлу. Обратите внимание, что weights — это одномерный массив.
Библиотека matplotlib.pyplot также уже загружена. После выполнения шагов градиентного спуска история ошибок будет отображена на графике.
Это упражнение является частью курса
Введение в глубокое обучение на Python
Инструкции к упражнению
- Используя цикл
forдля итеративного обновления весов:- Вычислите градиент с помощью функции
get_slope(). - Обновите веса, используя скорость обучения
0.01. - Вычислите среднеквадратическую ошибку (
mse) для обновлённых весов с помощью функцииget_mse(). - Добавьте
mseвmse_hist.
- Вычислите градиент с помощью функции
- Нажмите «Отправить ответ», чтобы визуализировать
mse_hist. Какую закономерность вы замечаете?
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
n_updates = 20
mse_hist = []
# Iterate over the number of updates
for i in range(n_updates):
# Calculate the slope: slope
slope = ____(____, ____, ____)
# Update the weights: weights
weights = ____ - ____ * ____
# Calculate mse with new weights: mse
mse = ____(____, ____, ____)
# Append the mse to mse_hist
____
# Plot the mse history
plt.plot(mse_hist)
plt.xlabel('Iterations')
plt.ylabel('Mean Squared Error')
plt.show()