class_docstr: Keras needs an extra input if learning_phase is used by the model
  This callback will be used:
  1. By the trainer with isTrain=True
  2. By InferenceRunner with isTrain=False, in the form of hooks
  
  If you use :class:`KerasModel` or :func:`setup_keras_trainer`,
  this callback will be automatically added when needed.
code: def _before_run(self, ctx):
      return tf.train.SessionRunArgs(
          fetches=[],
          feed_dict={self._learning_phase: int(self._isTrain)},
      )
  
imports: from contextlib import contextmanager
  import six
  import tensorflow
  from tensorflow import keras
  from ..callbacks import Callback, CallbackToHook, InferenceRunner, InferenceRunnerBase, ScalarStats
  from ..models.regularize import regularize_cost_from_collection
  from ..tfutils.collection import backup_collection, restore_collection
  from ..tfutils.common import get_op_tensor_name
  from ..tfutils.scope_utils import cached_name_scope
  from ..tfutils.summary import add_moving_summary
  from ..tfutils.tower import get_current_tower_context
  from ..train import SimpleTrainer, SyncMultiGPUTrainerParameterServer, Trainer
  from ..train.interface import apply_default_prefetch
  from ..train.trainers import DistributedTrainerBase
  from ..utils import logger
  from ..utils.gpu import get_nr_gpu
label_desc: Use image node_id 3 for calling the KerasPhaseCallback obj's underlying member method code with example usage: obj._before_run(ctx) and returns: tf