class_docstr: Example of interpreting repeated observations.
class_docstr_tok: ["Example","of","interpreting","repeated","observations","."]
code: def forward(self, input_dict, state, seq_lens):
      # The unpacked input tensors, where M=MAX_PLAYERS, N=MAX_ITEMS:
      # {
      #   'items', <tf.Tensor shape=(?, M, N, 5)>,
      #   'location', <tf.Tensor shape=(?, M, 2)>,
      #   'status', <tf.Tensor shape=(?, M, 10)>,
      # }
      print("The unpacked input tensors:", input_dict["obs"])
      print()
      print(
          "Unbatched repeat dim", input_dict["obs"].unbatch_repeat_dim()
      )
      print()
      if tf.executing_eagerly():
          print("Fully unbatched", input_dict["obs"].unbatch_all())
          print()
      return self.model.forward(input_dict, state, seq_lens)
  
file_path: ray/python/ray/rllib/examples/models/simple_rpg_model.py
imports: from ray.rllib.models.tf.tf_modelv2 import TFModelV2
  from ray.rllib.models.tf.fcnet import FullyConnectedNetwork
  from ray.rllib.models.torch.torch_modelv2 import TorchModelV2
  from ray.rllib.models.torch.fcnet import FullyConnectedNetwork
  from ray.rllib.utils.framework import try_import_tf, try_import_torch
label_desc: Use image node_id 2 for calling the CustomTFRPGModel obj's underlying member method code with example usage: obj.forward(input_dict, state, seq_lens) and returns: self