Напишите функцию gradient_descent(), реализующую алгоритм градиентного спуска для функции f(x). На вход она принимает:
initialization— начальное значение вектора x;step_size— размер шага μ;iterations— количество итераций.
Функция возвращает значение вектора x после заданного числа итераций. Проверьте функцию на разных количествах итераций (уже в прекоде).
import numpy as np
def func(x):
return (x[0] + x[1] - 1)**2 + (x[0] - x[1] - 2)**2
def gradient(x):
return np.array([4 * x[0] - 6, 4 * x[1] + 2])
def gradient_descent(initialization, step_size, iterations):
x = initialization
for i in range(iterations):
x = x - step_size * (gradient(x))
return x
print(gradient_descent(np.array([0, 0]), 0.1, 5))
print(gradient_descent(np.array([0, 0]), 0.1, 100))