class_docstr: Stochastic gradient descent optimizer with Adam
  
  Note: All default values are from the original Adam paper
  
  Parameters
  ----------
  params : list, length = len(coefs_) + len(intercepts_)
      The concatenated list containing coefs_ and intercepts_ in MLP model.
      Used for initializing velocities and updating params
  
  learning_rate_init : float, default=0.001
      The initial learning rate used. It controls the step-size in updating
      the weights
  
  beta_1 : float, default=0.9
      Exponential decay rate for estimates of first moment vector, should be
      in [0, 1)
  
  beta_2 : float, default=0.999
      Exponential decay rate for estimates of second moment vector, should be
      in [0, 1)
  
  epsilon : float, default=1e-8
      Value for numerical stability
  
  Attributes
  ----------
  learning_rate : float
      The current learning rate
  
  t : int
      Timestep
  
  ms : list, length = len(params)
      First moment vectors
  
  vs : list, length = len(params)
      Second moment vectors
  
  References
  ----------
  :arxiv:`Kingma, Diederik, and Jimmy Ba (2014) "Adam: A method for
      stochastic optimization." <1412.6980>
code: def __init__(
      self,
      params,
      learning_rate_init=0.001,
      beta_1=0.9,
      beta_2=0.999,
      epsilon=1e-8,
  ):
      super().__init__(learning_rate_init)
  
      self.beta_1 = beta_1
      self.beta_2 = beta_2
      self.epsilon = epsilon
      self.t = 0
      self.ms = [np.zeros_like(param) for param in params]
      self.vs = [np.zeros_like(param) for param in params]
  
file_path: scikit-learn/sklearn/neural_network/_stochastic_optimizers.py
imports: import numpy
label_desc: Use image node_id 1 to create a new AdamOptimizer object from inherited base classes: BaseOptimizer with example: obj = AdamOptimizer(params, learning_rate_init, beta_1, beta_2, epsilon)