我在python中有一个神经网络类,它使用反向传播来返回与我的成本函数的变化相关的权重变化。然后我通过此功能运行它
def GradientDescent(self,DcOverDwL_jk,stepSize):
self.NegGrad = -1*(DcOverDwL_jk)
self.change = stepSize*self.NegGrad
这听起来可能是一个愚蠢的问题,但是我现在如何处理“更改”值?是否将此添加到网络中的每个权重?预先感谢。
如果您有theta的梯度,则必须将其乘以学习率(alpha),如果还没有,则将其除以训练示例的数量。然后从原始theta中减去它。您对每个权重都执行此操作,并且对每个训练集迭代(步骤)执行此操作。而且,如果您很好地选择了学习权重和架构,则最终假设应为您提供成本函数的局部最小值(除非凸出)。
for i in range(steps):
#do forward prop
#do back prop
theta1 = theta1 - ((1/m) * (alpha * grad1))
theta2 = theta2 - ((1/m) * (alpha * grad2))