class_docstr: Container holding a list of callbacks.
code: def on_train_end(self, logs=None):
      logs = logs or {}
      logs["initial_epoch"] = self.initial_epoch
      logs["final_epoch"] = self.final_epoch
  
      logs["final_loss"] = self.trainer.history.epoch_metrics["loss"][
          -1
      ]
      logs["best_loss"] = min(
          self.trainer.history.epoch_metrics["loss"]
      )
      if self.has_val_data:
          logs["final_val_loss"] = self.trainer.history.epoch_metrics[
              "val_loss"
          ][-1]
          logs["best_val_loss"] = min(
              self.trainer.history.epoch_metrics["val_loss"]
          )
  
      logs["start_time"] = self.start_time_date
      logs["start_time_s"] = self.start_time_s
  
      time_s, time_date = _get_current_time()
      logs["stop_time"] = time_date
      logs["stop_time_s"] = time_s
      for callback in self.callbacks:
          callback.on_train_end(logs)
  
file_path: pywick/pywick/callbacks/CallbackContainer.py
imports: import time
  import datetime
label_desc: Use image node_id 10 for calling the CallbackContainer obj's underlying member method code with example usage: obj.on_train_end(logs) without return types