code: def __init__(
      self,
      agent_parameters,
      parent: Union["LevelManager", "CompositeAgent"] = None,
  ):
      super().__init__(agent_parameters, parent)
      self.last_gradient_update_step_idx = 0
      self.action_advantages = self.register_signal("Advantages")
      self.state_values = self.register_signal("Values")
      self.value_loss = self.register_signal("Value Loss")
      self.policy_loss = self.register_signal("Policy Loss")
  
imports: from typing import Union
  import numpy
  import scipy.signal
  from rl_coach.agents.policy_optimization_agent import PolicyOptimizationAgent, PolicyGradientRescaler
  from rl_coach.architectures.embedder_parameters import InputEmbedderParameters
  from rl_coach.architectures.head_parameters import PolicyHeadParameters, VHeadParameters
  from rl_coach.architectures.middleware_parameters import FCMiddlewareParameters
  from rl_coach.base_parameters import AlgorithmParameters, NetworkParameters, AgentParameters
  from rl_coach.exploration_policies.categorical import CategoricalParameters
  from rl_coach.exploration_policies.continuous_entropy import ContinuousEntropyParameters
  from rl_coach.logger import screen
  from rl_coach.memories.episodic.single_episode_buffer import SingleEpisodeBufferParameters
  from rl_coach.spaces import DiscreteActionSpace, BoxActionSpace
  from rl_coach.utils import last_sample
label_desc: Use image node_id 1 to create a new ActorCriticAgent object from inherited base classes: PolicyOptimizationAgent with example: obj = ActorCriticAgent(agent_parameters, parent)