code: def _log_epoch_metrics(self, epoch, logs):
      if not logs:
          return
  
      track_func = self._run.track
  
      train_logs = {
          k: v for k, v in logs.items() if not k.startswith("val_")
      }
      for name, value in train_logs.items():
          track_func(
              value, name=name, epoch=epoch, context={"subset": "train"}
          )
  
      val_logs = {k: v for k, v in logs.items() if k.startswith("val_")}
      for name, value in val_logs.items():
          track_func(
              value,
              name=name[4:],
              epoch=epoch,
              context={"subset": "val"},
          )
  
      lr = self._get_learning_rate()
      if lr is not None:
          track_func(
              lr, name="lr", epoch=epoch, context={"subset": "train"}
          )
  
label_desc: Use image node_id 3 for calling the TrackerKerasCallbackMetricsEpochEndMixin obj's underlying member method code with example usage: obj._log_epoch_metrics(epoch, logs) without return types