class_docstr: A simple FC model that takes the last n observations as input.
class_docstr_tok: ["A","simple","FC","model","that","takes","the","last","n","observations","as","input","."]
code: def forward(self, input_dict, states, seq_lens):
      obs = input_dict["prev_n_obs"]
      obs = torch.reshape(
          obs, [-1, self.obs_space.shape[0] * self.num_frames]
      )
      rewards = torch.reshape(
          input_dict["prev_n_rewards"], [-1, self.num_frames]
      )
      actions = torch_one_hot(
          input_dict["prev_n_actions"], self.action_space
      )
      actions = torch.reshape(
          actions, [-1, self.num_frames * actions.shape[-1]]
      )
      input_ = torch.cat([obs, actions, rewards], dim=-1)
      features = self.layer1(input_)
      features = self.layer2(features)
      out = self.out(features)
      self._last_value = self.values(features)
      return out, []
  
file_path: ray/python/ray/rllib/examples/models/trajectory_view_utilizing_models.py
imports: from ray.rllib.models.tf.tf_modelv2 import TFModelV2
  from ray.rllib.models.torch.misc import SlimFC
  from ray.rllib.models.torch.torch_modelv2 import TorchModelV2
  from ray.rllib.policy.view_requirement import ViewRequirement
  from ray.rllib.utils.framework import try_import_tf, try_import_torch
  from ray.rllib.utils.tf_utils import one_hot
  from ray.rllib.utils.torch_utils import one_hot
label_desc: Use image node_id 2 for calling the TorchFrameStackingCartPoleModel obj's underlying member method code with example usage: obj.forward(input_dict, states, seq_lens) and returns: out,  list