docstr: Update nested variables container v by Adam update step, using
  nested grads container.
  
  Parameters
  ----------
  v
      Nested variables to update.
  grads
      Nested gradients to update.
  
  Returns
  -------
  ret
      The updated variables, following Adam update step.
docstr_tok: ["Update","nested","variables","container","v","by","Adam","update","step",",","using","nested","grads","container",".","Parameters","--","--","--","--","--","v","Nested","variables","to","update",".","grads","Nested","gradients","to","update",".","Returns","--","--","--","-","ret","The","updated","variables",",","following","Adam","update","step","."]
code: def _step(self, v: ivy.Container, grads: ivy.Container):
      """Update nested variables container v by Adam update step, using
      nested grads container.
  
      Parameters
      ----------
      v
          Nested variables to update.
      grads
          Nested gradients to update.
  
      Returns
      -------
      ret
          The updated variables, following Adam update step.
      """
      if self._first_pass:
          self._mw = grads
          self._vw = grads**2
          self._first_pass = False
  
      new_v, self._mw, self._vw = ivy.adam_update(
          v,
          grads,
          self._lr if isinstance(self._lr, float) else self._lr(),
          self._mw,
          self._vw,
          self._count,
          beta1=self._beta1,
          beta2=self._beta2,
          epsilon=self._epsilon,
          stop_gradients=self._stop_gradients,
      )
      return new_v
  
imports: import abc
  from typing import Union, Optional, Callable
  import ivy
label_desc: Use image node_id 2 for calling the Adam obj's underlying member method code with example usage: obj._step(v, grads) and returns: new_v