code: def aggregating_observers(self):
      agg_obs = {}
      for name in [
          "loss",
          "gmm",
          "bce",
          "mse",
          "eval_loss",
          "eval_gmm",
          "eval_bce",
          "eval_mse",
          "test_loss",
          "test_gmm",
          "test_bce",
          "test_mse",
      ]:
          # Mean Aggegators - average losses over every report_interval minibatches
          mean_agg = agg.MeanAggregator(name)
          agg_obs[name] = IntervalAggregatingObserver(
              self.report_interval, mean_agg
          )
          # Tensorboard aggregators
          tb_obs_name = f"{name}_tb"
          tb_agg = agg.TensorBoardHistogramAndMeanAggregator(name, name)
          agg_obs[tb_obs_name] = IntervalAggregatingObserver(
              self.report_interval, tb_agg
          )
          # Epoch Aggregators - average losses per epoch
          ep_obs_name = f"{name}_epoch"
          ep_mean_agg = agg.MeanAggregator(name)
          agg_obs[ep_obs_name] = IntervalAggregatingObserver(
              999999999999999,  # a huge report interval to prevent from aggregating before epoch ends
              ep_mean_agg,
          )
      return agg_obs
  
file_path: ReAgent/reagent/reporting/world_model_reporter.py
imports: import logging
  from reagent.core import aggregators
  from reagent.core.observers import IntervalAggregatingObserver
  from reagent.reporting.reporter_base import ReporterBase
  from reagent.workflow.training_reports import WorldModelTrainingReport
label_desc: Use image node_id 3 for calling the WorldModelReporter obj's underlying member method code with example usage: obj.aggregating_observers() and returns: agg_obs