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