class_docstr: Update rule for Simon Funk's SMORMS3.
  
  See :class:`~chainer.optimizers.SMORMS3` for the default values of the
  hyperparameters.
  
  Args:
      parent_hyperparam (~chainer.optimizer.Hyperparameter): Hyperparameter
          that provides the default values.
      lr (float): Learning rate.
      eps (float): Small value for the numerical stability.
class_docstr_tok: ["Update","rule","for","Simon","Funk","'s","SMORMS3",".","See",":","class",":","`","~chainer.optimizers.SMORMS3","`","for","the","default","values","of","the","hyperparameters",".","Args",":","parent_hyperparam","(","~chainer.optimizer.Hyperparameter",")",":","Hyperparameter","that","provides","the","default","values",".","lr","(","float",")",":","Learning","rate",".","eps","(","float",")",":","Small","value","for","the","numerical","stability","."]
code: def update_core_cpu(self, param):
      grad = param.grad
      if grad is None:
          return
      mem, g, g2 = self.state["mem"], self.state["g"], self.state["g2"]
  
      r = 1 / (mem + 1)
      g = (1 - r) * g + r * grad
      g2 = (1 - r) * g2 + r * grad * grad
      x = g * g / (g2 + self.hyperparam.eps)
      param.data -= (
          grad
          * numpy.minimum(x, self.hyperparam.lr)
          / (numpy.sqrt(g2) + self.hyperparam.eps)
      )
      mem = 1 + mem * (1 - x)
  
      self.state["mem"], self.state["g"], self.state["g2"] = mem, g, g2
  
file_path: chainer/chainer/optimizers/smorms3.py
imports: import numpy
  import chainer
  from chainer.backends import cuda
  from chainer import optimizer
  from chainer import types
label_desc: Use image node_id 3 for calling the SMORMS3Rule obj's underlying member method code with example usage: obj.update_core_cpu(param) without return types