class_docstr: Simple linear policy net for demonstration purposes. 
class_docstr_tok: ["Simple","linear","policy","net","for","demonstration","purposes","."]
code: def __init__(
      self,
      obs_shapes: Dict[str, Sequence[int]],
      action_logit_shapes: Dict[str, Sequence[int]],
  ):
      super().__init__()
      self.net = nn.Sequential(
          nn.Linear(
              in_features=obs_shapes["observation"][0],
              out_features=action_logit_shapes["action"][0],
          )
      )
  
imports: from typing import Dict, Sequence
  import gym
  import torch
  import torch.nn
  from maze.core.agent.torch_actor_critic import TorchActorCritic
  from maze.core.agent.torch_policy import TorchPolicy
  from maze.core.agent.torch_state_critic import TorchSharedStateCritic
  from maze.core.rollout.rollout_generator import RolloutGenerator
  from maze.core.wrappers.maze_gym_env_wrapper import GymMazeEnv
  from maze.distributions.distribution_mapper import DistributionMapper
  from maze.perception.blocks.general.torch_model_block import TorchModelBlock
  from maze.train.parallelization.vector_env.sequential_vector_env import SequentialVectorEnv
  from maze.train.trainers.a2c.a2c_algorithm_config import A2CAlgorithmConfig
  from maze.train.trainers.a2c.a2c_trainer import A2C
  from maze.train.trainers.common.evaluators.rollout_evaluator import RolloutEvaluator
  from maze.train.trainers.common.model_selection.best_model_selection import BestModelSelection
  from maze.utils.log_stats_utils import setup_logging
label_desc: Use image node_id 1 to create a new CartpolePolicyNet object from inherited base classes: nn with example: obj = CartpolePolicyNet(obs_shapes, action_logit_shapes)