class_docstr: Keras version of above BatchNormModel with exactly the same structure.
  
  IMORTANT NOTE: This model will not work with PPO due to a bug in keras
  that surfaces when having more than one input placeholder (here: `inputs`
  and `is_training`) AND using the `make_tf_callable` helper (e.g. used by
  PPO), in which auto-placeholders are generated, then passed through the
  tf.keras. models.Model. In this last step, the connection between 1) the
  provided value in the auto-placeholder and 2) the keras `is_training`
  Input is broken and keras complains.
  Use the below `BatchNormModel` (a non-keras based TFModelV2), instead.
code: def forward(self, input_dict, state, seq_lens):
      if isinstance(input_dict, SampleBatch):
          is_training = input_dict.is_training
      else:
          is_training = input_dict["is_training"]
      # Have to batch the is_training flag (B=1).
      out, self._value_out = self.base_model(
          [input_dict["obs"], tf.expand_dims(is_training, 0)]
      )
      return out, []
  
imports: import numpy
  from ray.rllib.models.modelv2 import ModelV2
  from ray.rllib.models.tf.misc import normc_initializer
  from ray.rllib.models.tf.tf_modelv2 import TFModelV2
  from ray.rllib.models.torch.misc import SlimFC, normc_initializer
  from ray.rllib.models.torch.torch_modelv2 import TorchModelV2
  from ray.rllib.policy.sample_batch import SampleBatch
  from ray.rllib.utils.annotations import override
  from ray.rllib.utils.framework import try_import_tf, try_import_torch
label_desc: Use image node_id 2 for calling the KerasBatchNormModel obj's underlying member method code with example usage: obj.forward(input_dict, state, seq_lens) and returns: out,  list