docs: def _apply_updates(self, gradients):
          """Apply AdaGrad update to parameters.
  
          Parameters
          ----------
          gradients
  
          Returns
          -------
  
          """
          if not hasattr(self, 'optimizers'):
              self.optimizers = \
                  {obj: AdaGradOptimizer(self.learning_rate)
                   for obj in ['W', 'C', 'bw', 'bc']}
          self.W -= self.optimizers['W'].get_step(gradients['W'])
          self.C -= self.optimizers['C'].get_step(gradients['C'])
          self.bw -= self.optimizers['bw'].get_step(gradients['bw'])
          self.bc -= self.optimizers['bc'].get_step(gradients['bc'])