class_docstr: Custom model for policy gradient algorithms.
code: def __init__(
      self, obs_space, action_space, num_outputs, model_config, name
  ):
      super(MyKerasModel, self).__init__(
          obs_space, action_space, num_outputs, model_config, name
      )
      self.inputs = tf.keras.layers.Input(
          shape=obs_space.shape, name="observations"
      )
      layer_1 = tf.keras.layers.Dense(
          16,
          name="layer1",
          activation=tf.nn.relu,
          kernel_initializer=normc_initializer(1.0),
      )(self.inputs)
      layer_out = tf.keras.layers.Dense(
          num_outputs,
          name="out",
          activation=None,
          kernel_initializer=normc_initializer(0.01),
      )(layer_1)
      if self.model_config["vf_share_layers"]:
          value_out = tf.keras.layers.Dense(
              1,
              name="value",
              activation=None,
              kernel_initializer=normc_initializer(0.01),
          )(layer_1)
          self.base_model = tf.keras.Model(
              self.inputs, [layer_out, value_out]
          )
      else:
          self.base_model = tf.keras.Model(self.inputs, layer_out)
  
imports: import h5py
  import numpy
  from pathlib import Path
  import unittest
  import ray
  from ray.rllib.algorithms.ppo import PPOConfig
  from ray.rllib.models.catalog import ModelCatalog
  from ray.rllib.models.tf.misc import normc_initializer
  from ray.rllib.models.tf.tf_modelv2 import TFModelV2
  from ray.rllib.models.torch.torch_modelv2 import TorchModelV2
  from ray.rllib.policy.sample_batch import DEFAULT_POLICY_ID
  from ray.rllib.utils.framework import try_import_tf, try_import_torch
  from ray.rllib.utils.test_utils import check, framework_iterator
label_desc: Use image node_id 1 to create a new MyKerasModel object from inherited base classes: TFModelV2 with example: obj = MyKerasModel(obs_space, action_space, num_outputs, model_config, name)