def rmsprop_updates(grads, params, learning_rate=1.0, rho=0.9, epsilon=1e-6):
"""
"""
updates = OrderedDict()
# Using theano constant to prevent upcasting of float32
one = T.constant(1)
for param, grad in zip(params, grads):
value = param.get_value(borrow=True)
accu = theano.shared(np.zeros(value.shape, dtype=value.dtype),
broadcastable=param.broadcastable)
accu_new = rho * accu + (one - rho) * grad ** 2
updates[accu] = accu_new
try:
updates[param] = lasagne.updates.norm_constraint( param - (learning_rate * grad /
T.sqrt(accu_new + epsilon)) , MAX_NORM )
except:
updates[param] = param - (learning_rate * grad /
T.sqrt(accu_new + epsilon))
return updates
评论列表
文章目录