def forward(self, x: torch.Tensor) -> List[torch.Tensor]:
        """
        **Overview**:
            The computation graph of discrete action policy network used in PPO.
            ``x -> encoder -> multiple head -> multiple logit`` .
        """
        # Transform original state into embedding vector, i.e. $$(B, *) -> (B, N)$$
        x = self.encoder(x)
        # Calculate multiple logit for each possible discrete action, i.e. $$(B, N) -> [(B, A_1), ..., (B, A_N)]$$
        logit = [h(x) for h in self.head]
        return logit

        **Overview**:
            The computation graph of discrete action policy network used in PPO.
            ``x -> encoder -> multiple head -> multiple logit`` .
        
chapter2_action/discrete_tutorial.py