class_docstr: Estimate the time left until completion of training.
code: def _trigger_epoch(self):
      duration = time.time() - self._last_time
      self._last_time = time.time()
      self._times.append(duration)
  
      epoch_time = (
          np.median(self._times)
          if self._median
          else np.mean(self._times)
      )
      time_left = (self._max_epoch - self.epoch_num) * epoch_time
      if time_left > 0:
          logger.info(
              "Estimated Time Left: " + humanize_time_delta(time_left)
          )
  
imports: import numpy
  import os
  import time
  from collections import deque
  from ..utils import logger
  from ..utils.utils import humanize_time_delta
  from .base import Callback
label_desc: Use image node_id 3 for calling the EstimatedTimeLeft obj's underlying member method code with example usage: obj._trigger_epoch() without return types