class_docstr: Base trainer class for the DQN algorihtm variants.
  
  A base class for training variants of the DQN algorithm.
  Provides methods for q-values calculation, reward boosting, and also
  initializing and training counterfactual policy evaluation
  metrics estimators (see https://arxiv.org/abs/1811.00260 for detail).
  
  Attributes:
      rl_parameters: an object of a reagent.core.parameters.RLParameters
          data class.
      metrics_to_score: a list of strings representing reward metrics.
      evaluation_parameters: an object of a
          reagent.core.parameters.EvaluationParameters data class.
      q_network_loss: a loss function object, currently either
          torch.nn.functional.mse_loss or torch.nn.functional.smooth_l1_loss.
      reward_boosts: a torch tensor containing reward boost values at
          indices corresponding to respective discrete actions.
      calc_cpe_in_training: a boolean flag whether to calculate CPE metrics
          during training.
      reward_network: a network object mapping states to rewards and
          extra reward metrics. Given the number of discrete actions n and
          e.g. a set of k reward metrics `m_1`, `m_2`, ..., and `m_k`, the
          reward_network output has shape (batch_size, n * k), where
          the [:, (k - 1) * n : k * n] sub-tensor contains the metric `m_k`
          q-values estimates for each of the n actions. The order of metrics
          in the output is the following: the environment reward, followed by
          extra metrics sorted by their names in RewardOptions.metric_reward_values
          config.
      reward_network_optimizer: an optimizer object for training
          reward network.
      q_network_cpe: a network object mapping states to CPE metrics.
      q_network_cpe_target: a copy of q_network_cpe for training stability.
      q_network_cpe_optimizer: an optimizer object for training q_network_cpe.
      reward_idx_offsets: a flat torch tensor containing integer offsets of
          different reward metrics in the reward_network output.
      evaluator: an object of a reagent.evaluation.evaluator.Evaluator class.
docstr: Aggregates EvaluationDataPage objects.
  
  Combines a list of EvaluationDataPage objects obtained as a result
  of calling the validation_step method into a single object. Switches
  to CPU to avoid running out of memory on GPU as this operation can be
  memory intensive.
  
  Args:
      validation_step_outputs: a list of EvaluationDataPage objects
          returned by the validation_step method.
  Returns:
      An EvaluationDataPage object containing concatenated data from
      the input list of objects.
docstr_tok: ["Aggregates","EvaluationDataPage","objects",".","Combines","a","list","of","EvaluationDataPage","objects","obtained","as","a","result","of","calling","the","validation_step","method","into","a","single","object",".","Switches","to","CPU","to","avoid","running","out","of","memory","on","GPU","as","this","operation","can","be","memory","intensive",".","Args",":","validation_step_outputs",":","a","list","of","EvaluationDataPage","objects","returned","by","the","validation_step","method",".","Returns",":","An","EvaluationDataPage","object","containing","concatenated","data","from","the","input","list","of","objects","."]
code: def gather_eval_data(self, validation_step_outputs):
      """Aggregates EvaluationDataPage objects.
  
      Combines a list of EvaluationDataPage objects obtained as a result
      of calling the validation_step method into a single object. Switches
      to CPU to avoid running out of memory on GPU as this operation can be
      memory intensive.
  
      Args:
          validation_step_outputs: a list of EvaluationDataPage objects
              returned by the validation_step method.
      Returns:
          An EvaluationDataPage object containing concatenated data from
          the input list of objects.
      """
      was_on_gpu = self.on_gpu
      self.cpu()
      eval_data = None
      for edp in validation_step_outputs:
          if eval_data is None:
              eval_data = edp
          else:
              eval_data = eval_data.append(edp)
      if eval_data and eval_data.mdp_id is not None:
          eval_data = eval_data.sort()
          eval_data = eval_data.compute_values(self.gamma)
          eval_data.validate()
      if was_on_gpu:
          self.cuda()
      return eval_data
  
imports: import logging
  from abc import abstractmethod
  from typing import Dict, List, Optional
  import reagent.core.types
  import torch
  import torch.nn.functional
  from reagent.core.parameters import EvaluationParameters, RLParameters
  from reagent.core.torch_utils import masked_softmax
  from reagent.evaluation.evaluation_data_page import EvaluationDataPage
  from reagent.evaluation.evaluator import Evaluator
  from reagent.optimizer import Optimizer__Union
  from reagent.training.reagent_lightning_module import ReAgentLightningModule
  from reagent.training.rl_trainer_pytorch import RLTrainerMixin
label_desc: Use image node_id 10 for calling the DQNTrainerBaseLightning obj's underlying member method code with example usage: obj.gather_eval_data(validation_step_outputs) and returns: eval_data