docstr: Training epoch.
  
  :param kwargs:
  :return:
docstr_tok: ["Training","epoch",".",":","param","kwargs",":",":","return",":"]
code: def training_epoch(self, **kwargs):
      """Training epoch.
  
      :param kwargs:
      :return:
      """
      for self.mbatch in self.dataloader:
          if self._stop_training:
              break
  
          self._unpack_minibatch()
          self._before_training_iteration(**kwargs)
  
          self.optimizer.zero_grad()
          self.loss = self._make_empty_loss()
  
          # Inner updates
          self._before_inner_updates(**kwargs)
          self._inner_updates(**kwargs)
          self._after_inner_updates(**kwargs)
  
          # Outer update
          self._before_outer_update(**kwargs)
          self._outer_update(**kwargs)
          self._after_outer_update(**kwargs)
  
          self.mb_output = self.forward()
  
          self._after_training_iteration(**kwargs)
  
file_path: avalanche/avalanche/training/templates/update_type/meta_update.py
imports: from avalanche.training.templates.strategy_mixin_protocol import MetaLearningStrategyProtocol
  from avalanche.training.utils import trigger_plugins
label_desc: Use image node_id 1 for calling the MetaUpdate obj's underlying member method code with example usage: obj.training_epoch() without return types