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

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