def __init__(self, iterator: Iterable, verb: bool = False): super(TQDMReporter, self).__init__() self.writer = tqdm.tqdm(iterator, ncols=80) if is_master() else iterator self._verb = verb self._logger = liblog.get_logger(__name__) self._length = len(iterator) liblog._set_tqdm_handler()
def __init__(self, iterator: Iterable, verb: bool = False): super(TQDMReporter, self).__init__() self.writer = tqdm.tqdm( iterator, dynamic_ncols=True) if is_master() else iterator self._verb = verb self._logger = liblog.get_logger(__name__) self._length = len(iterator) self._max_accuracy = -1.0 liblog._set_tqdm_handler() liblog._set_tqdm_print()
def after_epoch(self, data: Mapping): reportable = {} results = super(TQDMReporter, self).after_epoch(data) if is_master(): for k, v in results.items(): if self._is_scalar(v): reportable[k] = self.to_serializable(v) elif isinstance(v, dict): reportable.update( {k: self.to_serializable(e) for k, e in v.items()}) self.writer.set_postfix(reportable) if self._verb: log = "" for k, v in reportable.items(): v = f"{v:.4f}" if isinstance(v, Number) else v log += f"{k}={v}, " self._logger.info(log[:-2])
def __new__(cls, *args, **kwargs): if cls.master_only and not is_master(): return _ReporterBase(*args, **kwargs) return object.__new__(cls)
def add_text(self, text: str): if is_master(): self.writer.write(text)