class_docstr: Base class for a trainer.
      
docstr: Defines what to do in one iteration. The default is:
  ``self.hooked_sess.run(self.train_op)``.
  
  The behavior of each iteration can be changed by either setting ``trainer.train_op``,
  or overriding this method.
docstr_tok: ["Defines","what","to","do","in","one","iteration",".","The","default","is",":","``","self.hooked_sess.run","(","self.train_op",")","``",".","The","behavior","of","each","iteration","can","be","changed","by","either","setting","``","trainer.train_op","``",",","or","overriding","this","method","."]
code: def run_step(self):
      """
      Defines what to do in one iteration. The default is:
      ``self.hooked_sess.run(self.train_op)``.
  
      The behavior of each iteration can be changed by either setting ``trainer.train_op``,
      or overriding this method.
      """
      if not hasattr(self, "train_op"):
          raise NotImplementedError(
              "Please either set `Trainer.train_op` or provide an implementation "
              "of Trainer.run_step()!"
          )
      self.hooked_sess.run(self.train_op)
  
imports: import copy
  import time
  import weakref
  import tensorflow
  from ..compat import tfv1
  from ..callbacks import Callback, Callbacks, Monitors, MonitorBase
  from ..callbacks.steps import MaintainStepCounter
  from ..tfutils import get_global_step_value
  from ..tfutils.model_utils import describe_trainable_vars
  from ..tfutils.sesscreate import NewSessionCreator, ReuseSessionCreator
  from ..tfutils.sessinit import JustCurrentSession, SessionInit
  from ..utils import logger
  from ..utils.argtools import call_only_once
  from ..utils.utils import humanize_time_delta
  from .config import DEFAULT_CALLBACKS, DEFAULT_MONITORS, TrainConfig
label_desc: Use image node_id 3 for calling the Trainer obj's underlying member method code with example usage: obj.run_step() without return types