code: def extendMetricsOutput(self):
      metrics_output = self.metrics_output
      if not metrics_output:
          metrics_output["epochs"] = self.record_epochs
          metrics_output["samples_per_sec"] = self.samples_per_sec
          metrics_output["secs_per_train"] = self.secs_per_train
          for metric, value in self.metrics.items():
              metrics_output[metric] = value["output"]
      else:
          metrics_output["epochs"].extend(self.record_epochs)
          metrics_output["samples_per_sec"].extend(self.samples_per_sec)
          metrics_output["secs_per_train"].extend(self.secs_per_train)
          for metric, value in self.metrics.items():
              metrics_output[metric].extend(value["output"])
  
imports: from abc import abstractmethod
  from caffe2.python import workspace
  from caffe2.python import timeout_guard
  from caffe2.python import data_parallel_model
  from .None import checkpoint
  from .None import ModuleRegister
  from .None import module_map
  import os
  import inspect
  import time
  import logging
label_desc: Use image node_id 8 for calling the AnyExpTrainer obj's underlying member method code with example usage: obj.extendMetricsOutput() without return types