code: def build_trainer(
      self,
      normalization_data_map: Dict[str, NormalizationData],
      use_gpu: bool,
      reward_options: Optional[RewardOptions] = None,
  ) -> ParametricDQNTrainer:
      net_builder = self.net_builder.value
      # pyre-fixme[16]: `ParametricDQN` has no attribute `_q_network`.
      self._q_network = net_builder.build_q_network(
          normalization_data_map[NormalizationKey.STATE],
          normalization_data_map[NormalizationKey.ACTION],
      )
      # Metrics + reward
      reward_options = reward_options or RewardOptions()
      metrics_to_score = get_metrics_to_score(
          reward_options.metric_reward_values
      )
      reward_output_dim = len(metrics_to_score) + 1
      reward_network = net_builder.build_q_network(
          normalization_data_map[NormalizationKey.STATE],
          normalization_data_map[NormalizationKey.ACTION],
          output_dim=reward_output_dim,
      )
  
      q_network_target = self._q_network.get_target_network()
      return ParametricDQNTrainer(
          q_network=self._q_network,
          q_network_target=q_network_target,
          reward_network=reward_network,
          # pyre-fixme[16]: `ParametricDQNTrainerParameters` has no attribute
          #  `asdict`.
          **self.trainer_param.asdict(),
      )
  
file_path: ReAgent/reagent/model_managers/parametric/parametric_dqn.py
imports: import logging
  from typing import Dict, Optional
  import torch
  from reagent.core.dataclasses import dataclass, field
  from reagent.core.parameters import NormalizationData, NormalizationKey, param_hash
  from reagent.evaluation.evaluator import get_metrics_to_score
  from reagent.model_managers.parametric_dqn_base import ParametricDQNBase
  from reagent.net_builder.parametric_dqn.fully_connected import FullyConnected
  from reagent.net_builder.unions import ParametricDQNNetBuilder__Union
  from reagent.training import ParametricDQNTrainer, ParametricDQNTrainerParameters, ReAgentLightningModule
  from reagent.workflow.types import RewardOptions
label_desc: Use image node_id 2 for calling the ParametricDQN obj's underlying member method code with example usage: obj.build_trainer(normalization_data_map, use_gpu, reward_options) and returns: ParametricDQNTrainer