class_docstr: Encapsulates a structured torch policy and critic
  for training actor-critic algorithms in structured environments.
  
  :param policy: A structured torch policy for training in structured environments.
  :param critic: A structured torch critic for training in structured environments.
  :param device: Device the model (networks) should be located on (cpu or cuda)
code: def __init__(
      self,
      policy: TorchPolicy,
      critic: Union[TorchStateCritic, TorchStateActionCritic],
      device: str,
  ):
      # check if appropriate models are provided
      assert critic is not None and isinstance(
          critic, (TorchStateCritic, TorchStateActionCritic)
      ), "Make sure to provide an appropriate critic when training with actor-critic models!"
      assert policy is not None and isinstance(
          policy, TorchPolicy
      ), "Make sure to provide an appropriate policy when training with actor-critic models!"
  
      self.policy = policy
      self.critic = critic
  
      TorchModel.__init__(self, device=device)
  
imports: from typing import List, Dict, Union, Tuple
  import torch
  from maze.core.agent.state_critic_input_output import StateCriticOutput, StateCriticInput
  from maze.core.agent.torch_model import TorchModel
  from maze.core.agent.torch_policy import TorchPolicy
  from maze.core.agent.torch_policy_output import PolicyOutput
  from maze.core.agent.torch_state_action_critic import TorchStateActionCritic
  from maze.core.agent.torch_state_critic import TorchStateCritic
  from maze.core.annotations import override
  from maze.core.trajectory_recording.records.structured_spaces_record import StructuredSpacesRecord
label_desc: Use image node_id 1 to create a new TorchActorCritic object from inherited base classes: TorchModel with example: obj = TorchActorCritic(policy, critic, device)