class_docstr: AdaBound optimizer.
  
  Parameters
  ----------
  lr
      The learning rate.
  beta_1
  beta_2
  eps
  gamma
  final_lr
  
  Attributes
  ----------
  m : collections.defaultdict
  s : collections.defaultdict
  
  Examples
  --------
  
  >>> from river import datasets
  >>> from river import evaluate
  >>> from river import linear_model
  >>> from river import metrics
  >>> from river import optim
  >>> from river import preprocessing
  
  >>> dataset = datasets.Phishing()
  >>> optimizer = optim.AdaBound()
  >>> model = (
  ...     preprocessing.StandardScaler() |
  ...     linear_model.LogisticRegression(optimizer)
  ... )
  >>> metric = metrics.F1()
  
  >>> evaluate.progressive_val_score(dataset, model, metric)
  F1: 88.06%
  
  References
  ----------
  [^1]: [Luo, L., Xiong, Y., Liu, Y. and Sun, X., 2019. Adaptive gradient methods with dynamic bound of learning rate. arXiv preprint arXiv:1902.09843](https://arxiv.org/abs/1902.09843)
code: def __init__(
      self,
      lr=1e-3,
      beta_1=0.9,
      beta_2=0.999,
      eps=1e-8,
      gamma=1e-3,
      final_lr=0.1,
  ):
      super().__init__(lr)
      self.base_lr = lr
      self.final_lr = final_lr
      self.beta_1 = beta_1
      self.beta_2 = beta_2
      self.eps = eps
      self.gamma = gamma
      self.m = collections.defaultdict(float)
      self.v = collections.defaultdict(float)
  
file_path: river/river/optim/ada_bound.py
imports: from __future__ import annotations
  import collections
  import math
  from river import optim, utils
label_desc: Use image node_id 1 to create a new AdaBound object from inherited base classes: optim.base with example: obj = AdaBound(lr, beta_1, beta_2, eps, gamma, final_lr)