'Class constructor.
Args:
stochastic_round (bool): Set this to True for stochastic rounding.
If False rounding will be to nearest.
If True will perform stochastic rounding using default width.
Only affects the gpu backend.
learning_rate (float): the multiplicative coefficient of updates
beta_1 (float): Adam parameter beta1
beta_2 (float): Adam parameter beta2
epsilon (float): numerical stability parameter
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.'

def __init__(self, stochastic_round=False, learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, gradient_clip_norm=None, gradient_clip_value=None, param_clip_value=None, name='adam'):

    super(Adam, self).__init__(name=name)
    self.beta_1 = beta_1
    self.beta_2 = beta_2
    self.epsilon = epsilon
    self.learning_rate = learning_rate
    self.stochastic_round = stochastic_round
    self.gradient_clip_norm = gradient_clip_norm
    self.gradient_clip_value = gradient_clip_value
    self.param_clip_value = param_clip_value
    self.t = 0
