Как применить изменение от градиентного спуска к весам в моей нейронной сети? - PullRequest
0 голосов
/ 30 января 2020

У меня есть класс нейронной сети в python, который использует обратное распространение для возврата изменения весов в зависимости от изменения моей функции стоимости. Затем я запускаю его через эту функцию

def GradientDescent(self,DcOverDwL_jk,stepSize):
    self.NegGrad = -1*(DcOverDwL_jk)
    self.change = stepSize*self.NegGrad

Это может звучать глупо, но что мне теперь делать со значением "change"? Я добавляю это к каждому весу в сети? Заранее спасибо.

1 Ответ

0 голосов
/ 31 января 2020

Если у вас есть градиенты для тэты, вы должны умножить их на скорость обучения (альфа), а если еще нет, разделите их также на количество обучающих примеров. Затем вы вычитаете его из первоначальной тэты. Вы делаете это для каждого веса и делаете это для каждой итерации учебного набора (шаги). И если вы правильно выбрали вес обучения и архитектуру, ваша окончательная гипотеза должна дать вам локальные минимумы функции стоимости (если не выпуклая).

for i in range(steps):
    #do forward prop
    #do back prop
    theta1 = theta1 - ((1/m) * (alpha * grad1))
    theta2 = theta2 - ((1/m) * (alpha * grad2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...