class_docstr: python reference implemenation of sparse Adagrad optimizer.
  
  This class implements the AdaGrad optimizer described in *Adaptive Subgradient
  Methods for Online Learning and Stochastic Optimization*, and available at
  http://www.jmlr.org/papers/volume12/duchi11a/duchi11a.pdf.
  
  Parameters
  ----------
  learning_rate : float, default 0.01
      The initial learning rate. If None, the optimization will use the
      learning rate from ``lr_scheduler``. If not None, it will overwrite
      the learning rate in ``lr_scheduler``. If None and ``lr_scheduler``
      is also None, then it will be set to 0.01 by default.
  epsilon : float, default 1e-6
      Small value to avoid division by 0.
code: def __init__(self, learning_rate=0.01, epsilon=1e-6, **kwargs):
      super(PySparseAdaGrad, self).__init__(
          learning_rate=learning_rate, **kwargs
      )
      self.epsilon = epsilon
  
imports: import itertools
  import numpy
  import itertools
  import mxnet
  import mxnet.lr_scheduler
  from mxnet import gluon
  import unittest
  import pytest
  import math
  from mxnet.test_utils import *
  from common import retry, xfail_when_nonstandard_decimal_separator
label_desc: Use image node_id 1 to create a new PySparseAdaGrad object from inherited base classes: mx.optimizer with example: obj = PySparseAdaGrad(learning_rate, epsilon)