Многоуровневая реализация SGD, веса не обновляются должным образом - PullRequest
0 голосов
/ 26 марта 2020

Я внедряю SGD для изучения весов для мультиклассовой классификации. Не обращая внимания, мой код выглядит следующим образом:

def SGD(X, Y, nClasses=3):
    weights = np.zeros((nClasses,X.shape[1])) 
    for epoch in range(epochs):
        for x,y in zip(X,Y):
            yhat = softmax(np.dot(x,weights[y-1].T))
            weights[y-1] -= lr * (yhat-y) * x

Я делаю y-1, потому что мои метки начинаются с 1, то есть с 1,2,3,4 ... поэтому я вычитаю 1 из обновите соответствующие веса.

Однако после тренировки weights[0] это просто нули, но остальные классы обучены должным образом. Это приводит к высокой ошибке и низким баллам. Я не могу понять, почему первый набор весов не обновляется.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...