def __init__(self, agent_num: int, local_obs_shape: int, global_obs_shape: int, action_shape: int) -> None:
        """
        **Overview**:
            The definition of centralized training decentralized execution (CTDE) actor-critic network in policy gradient algorithms for multi-agent scenarios.
            Each agent shares the same parameters in the network so that they can be processed as a batch in parallel.
            The input of value network is ``global_obs`` while the input of policy network is ``local_obs`` .
            Global information used in value network can provide more guidance for the training of policy network.
            Local information used in policy network can make the policy network more robust to the decentralized execution.
        """
        # PyTorch necessary requirements for extending ``nn.Module`` . Our network should also subclass this class.
        super(CTDEActorCriticNetwork, self).__init__()
        # Define local and global encoder respectively.
        self.agent_num = agent_num
        self.local_encoder = nn.Sequential(
            nn.Linear(local_obs_shape, 32),
            nn.ReLU(),
            nn.Linear(32, 64),
            nn.ReLU(),
        )
        self.global_encoder = nn.Sequential(
            nn.Linear(global_obs_shape, 32),
            nn.ReLU(),
            nn.Linear(32, 64),
            nn.ReLU(),
        )
        # Define discrete action logit output network, just one-layer FC.
        self.policy_head = nn.Linear(64, action_shape)
        # Define scalar value output network.
        self.value_head = nn.Linear(64, 1)

        **Overview**:
            The definition of centralized training decentralized execution (CTDE) actor-critic network in policy gradient algorithms for multi-agent scenarios.
            Each agent shares the same parameters in the network so that they can be processed as a batch in parallel.
            The input of value network is ``global_obs`` while the input of policy network is ``local_obs`` .
            Global information used in value network can provide more guidance for the training of policy network.
            Local information used in policy network can make the policy network more robust to the decentralized execution.
        
chapter6_marl/marl_network.py