class_docstr: Custom updater for chainer.
  
  Args:
      train_iter (iterator | dict[str, iterator]): Dataset iterator for the
          training dataset. It can also be a dictionary that maps strings to
          iterators. If this is just an iterator, then the iterator is
          registered by the name ``'main'``.
      optimizer (optimizer | dict[str, optimizer]): Optimizer to update
          parameters. It can also be a dictionary that maps strings to
          optimizers. If this is just an optimizer, then the optimizer is
          registered by the name ``'main'``.
      converter (espnet.asr.chainer_backend.asr.CustomConverter): Converter
          function to build input arrays. Each batch extracted by the main
          iterator and the ``device`` option are passed to this function.
          :func:`chainer.dataset.concat_examples` is used by default.
      device (int or dict): The destination device info to send variables. In the
          case of cpu or single gpu, `device=-1 or 0`, respectively.
          In the case of multi-gpu, `device={"main":0, "sub_1": 1, ...}`.
      accum_grad (int):The number of gradient accumulation. if set to 2, the network
          parameters will be updated once in twice,
          i.e. actual batchsize will be doubled.
docstr: Update step for Custom Updater.
docstr_tok: ["Update","step","for","Custom","Updater","."]
code: def update(self):
      """Update step for Custom Updater."""
      self.update_core()
      if self.forward_count == 0:
          self.iteration += 1
  
imports: import collections
  import logging
  import math
  import numpy
  from chainer import cuda
  from chainer import functions
  from chainer import training
  from chainer.training import extension
  from chainer.training.updaters.multiprocess_parallel_updater import gather_grads, gather_params, scatter_grads
label_desc: Use image node_id 3 for calling the CustomUpdater obj's underlying member method code with example usage: obj.update() without return types