code: def __init__(self, config):
      self.config = config
  
      env = gym.make(self.config["env_name"])
      self.config["obs_dim"] = env.observation_space.shape[0]
      self.config["act_dim"] = env.action_space.shape[0]
  
      self.obs_filter = MeanStdFilter(self.config["obs_dim"])
      self.noise = SharedNoiseTable(self.config["noise_size"])
  
      model = MujocoModel(self.config["act_dim"])
      algorithm = ES(model)
      self.agent = MujocoAgent(algorithm, self.config)
  
      self.latest_flat_weights = self.agent.get_flat_weights()
      self.latest_obs_filter = self.obs_filter.as_serializable()
  
      self.sample_total_episodes = 0
      self.sample_total_steps = 0
  
      self.actors_signal_input_queues = []
      self.actors_output_queues = []
  
      self.create_actors()
  
      self.eval_rewards_stat = WindowStat(
          self.config["report_window_size"]
      )
      self.eval_lengths_stat = WindowStat(
          self.config["report_window_size"]
      )
  
imports: from parl.utils import check_version_for_fluid
  import gym
  import os
  import parl
  import numpy
  import threading
  import utils
  from es import ES
  from obs_filter import MeanStdFilter
  from mujoco_agent import MujocoAgent
  from mujoco_model import MujocoModel
  from noise import SharedNoiseTable
  from parl.utils import logger, summary
  from parl.utils.window_stat import WindowStat
  from six.moves import queue
  from actor import Actor
label_desc: Use image node_id 1 to create a new Learner object from inherited base classes: object with example: obj = Learner(config)