Базовый градиентный спуск в Python

Я очень плохо знаком с машинным обучением, и я пытался закодировать базовый градиентный спуск в Python. Вот мой (очень простой) код:

n_iter = 50
learning_rate = 0.01
N = x.shape[0]                                     #where x is from my dataset
x_augmented = np.c_[np.ones((x.shape[0],1)),x].T
w = np.zeros((1,2))
objective=np.matrix(np.zeros((n_iter,2)))

for i in range(n_iter):
    gradient = lambda x: 2*(x+5)
    objective[i] = w - np.dot(learning_rate,gradient(w))
    w = objective[i]

Итак, мои проблемы: 1. из-за размеров w он должен вернуть мне пару чисел, которые на данный момент не отличаются, поэтому я как будто что-то теряю; 2. по моему мнению, градиент снижается слишком быстро, опять же, я должен был что-то потерять.

Это печать значения target [i] в ​​некоторых первых и в некоторых из последних итераций:

[[-0.1 -0.1]]
[[-0.198 -0.198]]
[[-0.29404 -0.29404]]
[[-0.3881592 -0.3881592]]
[[-0.48039602 -0.48039602]]
[[-0.5707881 -0.5707881]]
[[-0.65937233 -0.65937233]]
...
[[-3.10407289 -3.10407289]]
[[-3.14199143 -3.14199143]]
[[-3.1791516 -3.1791516]]

Спасибо за помощь:)

0 ответов

Другие вопросы по тегам