def SGD(obj, t=0, lr=1e-2, l2reg=1e-2, momentum=0.0, _=0.0, nesterov=0):
obj = regularize(obj, l2reg)
lrW = lr #schedule(t, lr, l2reg)
if not hasattr(obj, 'V'): obj.V = np.zeros_like(obj.W)
nescale(obj.V, np.single(momentum) )
newtadd(obj.V, np.single(lrW ), obj.G)
if not nesterov: newtadd(obj.W, -1, obj.V)
else : newtadd(obj.W, np.single(-momentum), obj.V); newtadd(obj.W, np.single(-lrW), obj.G)
#obj.V *= np.single(momentum)
#obj.V -= np.single(lrW) * obj.G
#if not nesterov: obj.W += obj.V
#else : obj.W += np.single(momentum) * obj.V - np.single(lrW) * obj.G
评论列表
文章目录