'Class constructor.
Arguments:
learning_rate (float): Multiplicative coefficient of updates
momentum_coef (float): Coefficient of momentum
stochastic_round (bool, optional): Set this to True for stochastic
rounding.  If False (default)
rounding will be to nearest.  If
True use default width
stochastic rounding.  Note that
this only affects the GPU
backend.
wdecay (float, optional): Amount of weight decay.  Defaults to 0
gradient_clip_norm (float, optional): Target gradient norm.
Defaults to None.
gradient_clip_value (float, optional): Value to element-wise clip
gradients.
Defaults to None.
param_clip_value (float, optional): Value to element-wise clip
parameters.
Defaults to None.
name (str, optional): the optimizer\'s layer\'s pretty-print name.
Defaults to "gdm".
schedule (neon.optimizers.optimizer.Schedule, optional): Learning
rate schedule.  Defaults to a constant learning rate.
nesterov (bool, optional): Use nesterov accelerated gradient.
Defaults to False.'

def __init__(self, learning_rate, momentum_coef, stochastic_round=False, wdecay=0.0, gradient_clip_norm=None, gradient_clip_value=None, param_clip_value=None, name=None, schedule=Schedule(), nesterov=False):

    super(GradientDescentMomentum, self).__init__(name=name)
    (self.learning_rate, self.momentum_coef) = (learning_rate, momentum_coef)
    self.gradient_clip_norm = gradient_clip_norm
    self.gradient_clip_value = gradient_clip_value
    self.param_clip_value = param_clip_value
    self.wdecay = wdecay
    self.schedule = schedule
    self.stochastic_round = stochastic_round
    self.nesterov = nesterov
    if ((self.momentum_coef == 0) and self.nesterov):
        raise ValueError('nesterov    requires    non-zero    momentum')
