code: def forward(
      self,
      obs: torch.Tensor,
      state: torch.Tensor = None,
      info: dict = {},
  ) -> Tuple[torch.Tensor, Optional[torch.Tensor]]:
      feature = self.extractor(to_torch(obs, device=auto_device(self)))
      out = self.layer_out(feature)
      return out, state
  
imports: from __future__ import annotations
  from pathlib import Path
  from typing import Any, Dict, Generator, Iterable, Optional, OrderedDict, Tuple, cast
  import gym
  import numpy
  import torch
  import torch.nn
  from gym.spaces import Discrete
  from tianshou.data import Batch, ReplayBuffer, to_torch
  from tianshou.policy import BasePolicy, PPOPolicy, DQNPolicy
  from qlib.rl.trainer.trainer import Trainer
label_desc: Use image node_id 2 for calling the PPOActor obj's underlying member method code with example usage: obj.forward(obs, state, info) and returns: out,  state