class_docstr: Momentum SGD optimizer.
  
  This implements momentum correction discussed in the third section of
  `Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour
  <https://arxiv.org/abs/1706.02677>`_.
  
  :class:`~chainer.optimizers.MomentumSGD` implements the equation (10) of
  the paper. This optimizer implements the equation (9).
  
  To get better understanding between the two methods,
  we show the equivalence between the equation (9) and modification of
  the equation (10) that takes momentum correction into account.
  First, we set :math:`v_{t} = \eta_{t} u_t`.
  We substitute this relation to the equation (10).
  
  .. math::
  
      v_{t+1} &= m\frac{\eta_{t+1}}{\eta_{t}}v_t + \eta_{t+1}g_t  \\
              &= m\frac{\eta_{t+1}}{\eta_{t}}\eta_{t}u_t +
              \eta_{t+1}g_t \\
              &= \eta_{t+1}(m u_t + g_t) \\
  
  From this result, we derive :math:`u_{t+1} = m u_t + g_t`, which is how
  update tensors are calculated by
  :class:`~chainer.optimizers.CorrectedMomentumSGD`. Thus, the equivalence
  is shown.
  
  Args:
      lr (float): Learning rate.
      momentum (float): Exponential decay rate of the first order moment.
class_docstr_tok: ["Momentum","SGD","optimizer",".","This","implements","momentum","correction","discussed","in","the","third","section","of","`","Accurate",",","Large","Minibatch","SGD",":","Training","ImageNet","in","1","Hour","<","https",":","\/\/arxiv.org\/abs\/1706.02677",">","`","_",".",":","class",":","`","~chainer.optimizers.MomentumSGD","`","implements","the","equation","(","10",")","of","the","paper",".","This","optimizer","implements","the","equation","(","9",")",".","To","get","better","understanding","between","the","two","methods",",","we","show","the","equivalence","between","the","equation","(","9",")","and","modification","of","the","equation","(","10",")","that","takes","momentum","correction","into","account",".","First",",","we","set",":","math",":","`","v_","{","t","}","=","\\eta_","{","t","}","u_t","`",".","We","substitute","this","relation","to","the","equation","(","10",")",".","..","math",":",":","v_","{","t+1","}","&","=","m\\frac","{","\\eta_","{","t+1","}","}","{","\\eta_","{","t","}","}","v_t","+","\\eta_","{","t+1","}","g_t","\\\\","&","=","m\\frac","{","\\eta_","{","t+1","}","}","{","\\eta_","{","t","}","}","\\eta_","{","t","}","u_t","+","\\eta_","{","t+1","}","g_t","\\\\","&","=","\\eta_","{","t+1","}","(","m","u_t","+","g_t",")","\\\\","From","this","result",",","we","derive",":","math",":","`","u_","{","t+1","}","=","m","u_t","+","g_t","`",",","which","is","how","update","tensors","are","calculated","by",":","class",":","`","~chainer.optimizers.CorrectedMomentumSGD","`",".","Thus",",","the","equivalence","is","shown",".","Args",":","lr","(","float",")",":","Learning","rate",".","momentum","(","float",")",":","Exponential","decay","rate","of","the","first","order","moment","."]
code: def create_update_rule(self):
      return CorrectedMomentumSGDRule(self.hyperparam)
  
file_path: chainer/chainer/optimizers/corrected_momentum_sgd.py
imports: import chainer
  from chainer.backends import cuda
  from chainer.backends import intel64
  from chainer import optimizer
  from chainer import types
label_desc: Use image node_id 2 for calling the CorrectedMomentumSGD obj's underlying member method code with example usage: obj.create_update_rule() and returns: CorrectedMomentumSGDRule