code: def __call__(self, loss, metrics, i):
      track_str = "\r{} | {:5d}/{:<5d}| ".format(
          self.mode, i + 1, self.length
      )
      loss_str = "loss: {:9.4f} | ".format(self.fn(loss, i))
      metric_str = " | ".join(
          "{}: {:9.4f}".format(k, self.fn(v, i))
          for k, v in metrics.items()
      )
      print(track_str + loss_str + metric_str + "   ", end="")
      if i + 1 == self.length:
          print("")
  
file_path: facenet-pytorch/models/utils/training.py
imports: import torch
  import numpy
  import time
label_desc: Use image node_id 2 for calling the Logger obj's underlying member method code with example usage: obj.__call__(loss, metrics, i) without return types