Реализация многоклассового SGD, веса не обновляются должным образом

Я использую 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]это просто нули, но остальные классы правильно обучены. Это приводит к высокой ошибке и низким баллам. Я не могу понять, почему не обновляется первый набор весов.

Спасибо.

0 ответов

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