class_docstr: Update rule for Nesterov's Accelerated Gradient.
  
  See :class:`~chainer.optimizers.NesterovAG` for the default values of the
  hyperparameters.
  
  Args:
      parent_hyperparam (~chainer.optimizer.Hyperparameter): Hyperparameter
          that provides the default values.
      lr (float): Learning rate.
      momentum (float): Exponential decay rate of the first order moment.
class_docstr_tok: ["Update","rule","for","Nesterov","'s","Accelerated","Gradient",".","See",":","class",":","`","~chainer.optimizers.NesterovAG","`","for","the","default","values","of","the","hyperparameters",".","Args",":","parent_hyperparam","(","~chainer.optimizer.Hyperparameter",")",":","Hyperparameter","that","provides","the","default","values",".","lr","(","float",")",":","Learning","rate",".","momentum","(","float",")",":","Exponential","decay","rate","of","the","first","order","moment","."]
code: def update_core_gpu(self, param):
      grad = param.grad
      if grad is None:
          return
      if NesterovAGRule._kernel is None:
          NesterovAGRule._kernel = cuda.elementwise(
              "T grad, T lr, T momentum",
              "T param, T v",
              """
                  v = v * momentum - lr * grad;
                  param += momentum * momentum * v - (1 + momentum) * lr * grad;
                  """,
              "nesterov_ag",
          )
      NesterovAGRule._kernel(
          grad,
          self.hyperparam.lr,
          self.hyperparam.momentum,
          param.data,
          self.state["v"],
      )
  
file_path: chainer/chainer/optimizers/nesterov_ag.py
imports: import chainer
  from chainer.backends import cuda
  from chainer import optimizer
  from chainer import types
label_desc: Use image node_id 4 for calling the NesterovAGRule obj's underlying member method code with example usage: obj.update_core_gpu(param) without return types