in training/trainer.py [0:0]
def _log_meters_and_save_best_ckpts(self, phases: List[str]):
logging.info("Synchronizing meters")
out_dict = {}
checkpoint_save_keys = []
for key, meter in self._get_meters(phases).items():
meter_output = meter.compute_synced()
is_better_check = getattr(meter, "is_better", None)
for meter_subkey, meter_value in meter_output.items():
out_dict[os.path.join("Meters_train", key, meter_subkey)] = meter_value
if is_better_check is None:
continue
tracked_meter_key = os.path.join(key, meter_subkey)
if tracked_meter_key not in self.best_meter_values or is_better_check(
meter_value,
self.best_meter_values[tracked_meter_key],
):
self.best_meter_values[tracked_meter_key] = meter_value
if (
self.checkpoint_conf.save_best_meters is not None
and key in self.checkpoint_conf.save_best_meters
):
checkpoint_save_keys.append(tracked_meter_key.replace("/", "_"))
if len(checkpoint_save_keys) > 0:
self.save_checkpoint(self.epoch + 1, checkpoint_save_keys)
return out_dict