class_docstr: Simple feed forward policy network.
  
  :param obs_shapes: The shapes of all observations as a dict.
  :param action_logits_shapes: The shapes of all actions as a dict structure.
  :param hidden_layer_0: The number of units in layer 0.
  :param hidden_layer_1: The number of units in layer 1.
  :param use_bias: Specify whether to use a bias in the linear layers.
docstr: Compute forward pass through the network.
  
  :param in_tensor_dict: Input tensor dict.
  :return: The computed output of the network.
code: def forward(
      self, in_tensor_dict: Dict[str, torch.Tensor]
  ) -> Dict[str, torch.Tensor]:
      """Compute forward pass through the network.
  
      :param in_tensor_dict: Input tensor dict.
      :return: The computed output of the network.
      """
      # Retrieve the observation tensor from the input dict
      xx_tensor = in_tensor_dict[self.observation_name]
  
      # Compute the forward pass thorough the network
      xx_tensor = F.relu(self.l0(xx_tensor))
      xx_tensor = F.relu(self.l1(xx_tensor))
      xx_tensor = self.l2(xx_tensor)
  
      # Create the output dictionary with the computed model output
      out = dict({self.action_name: xx_tensor})
      return out
  
file_path: maze/docs/source/policy_and_value_networks/code_snippets/custom_plain_cartpole_policy_net.py
imports: from typing import Dict, Sequence
  import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 3 for calling the CustomPlainCartpolePolicyNet obj's underlying member method code with example usage: obj.forward(in_tensor_dict) and returns: out