code: def __init__(self):
      super().__init__()
      self.input_embedders_parameters = {
          "observation": InputEmbedderParameters()
      }
      self.middleware_parameters = FCMiddlewareParameters()
      self.heads_parameters = [QHeadParameters()]
      self.optimizer_type = "Adam"
      self.async_training = True
      self.shared_optimizer = True
      self.create_target_network = True
  
imports: from typing import Union
  import numpy
  from rl_coach.agents.policy_optimization_agent import PolicyOptimizationAgent
  from rl_coach.agents.value_optimization_agent import ValueOptimizationAgent
  from rl_coach.architectures.embedder_parameters import InputEmbedderParameters
  from rl_coach.architectures.head_parameters import QHeadParameters
  from rl_coach.architectures.middleware_parameters import FCMiddlewareParameters
  from rl_coach.base_parameters import AlgorithmParameters, AgentParameters, NetworkParameters
  from rl_coach.core_types import EnvironmentSteps
  from rl_coach.exploration_policies.e_greedy import EGreedyParameters
  from rl_coach.memories.episodic.single_episode_buffer import SingleEpisodeBufferParameters
  from rl_coach.utils import last_sample
label_desc: Use image node_id 1 to create a new NStepQNetworkParameters object from inherited base classes: NetworkParameters with example: obj = NStepQNetworkParameters()