code: def __init__(
      self,
      agent_parameters,
      parent: Union["LevelManager", "CompositeAgent"] = None,
  ):
      super().__init__(agent_parameters, parent)
  
      # signals definition
      self.value_loss = self.register_signal("Value Loss")
      self.policy_loss = self.register_signal("Policy Loss")
      self.kl_divergence = self.register_signal("KL Divergence")
      self.total_kl_divergence_during_training_process = 0.0
      self.unclipped_grads = self.register_signal("Grads (unclipped)")
  
imports: import copy
  from collections import OrderedDict
  from typing import Union
  import numpy
  from rl_coach.agents.actor_critic_agent import ActorCriticAgent
  from rl_coach.agents.policy_optimization_agent import PolicyGradientRescaler
  from rl_coach.architectures.embedder_parameters import InputEmbedderParameters
  from rl_coach.architectures.head_parameters import PPOHeadParameters, VHeadParameters
  from rl_coach.architectures.middleware_parameters import FCMiddlewareParameters
  from rl_coach.base_parameters import AlgorithmParameters, NetworkParameters, AgentParameters, DistributedTaskParameters
  from rl_coach.core_types import EnvironmentSteps, Batch
  from rl_coach.exploration_policies.additive_noise import AdditiveNoiseParameters
  from rl_coach.exploration_policies.categorical import CategoricalParameters
  from rl_coach.logger import screen
  from rl_coach.memories.episodic.episodic_experience_replay import EpisodicExperienceReplayParameters
  from rl_coach.spaces import DiscreteActionSpace, BoxActionSpace
  from rl_coach.utils import force_list
label_desc: Use image node_id 1 to create a new PPOAgent object from inherited base classes: ActorCriticAgent with example: obj = PPOAgent(agent_parameters, parent)