示例#1
0
 def call(*args, **kwargs):
     global _writer
     if _writer is None:
         logdir = logger.get_dir()
         if logdir is None:
             logdir = logger.auto_set_dir(action='d')
             logger.warning(
                 "[VisualDL] logdir is None, will save VisualDL files to {}\nView the data using: visualdl --logdir=./{} --host={}"
                 .format(logdir, logdir, get_ip_address()))
         _writer = LogWriter(logdir=logger.get_dir())
     func = getattr(_writer, func_name)
     func(*args, **kwargs)
     _writer.flush()
示例#2
0
class VisualDL(Callback):
    def __init__(self, log_dir="./log", freq=1):
        super(VisualDL, self).__init__()
        self.log_dir = log_dir
        self.freq = freq

    def on_train_begin(self, logs=None):
        self.writer = LogWriter(self.log_dir)

    def on_iter_end(self, iter, logs=None):
        logs = logs or {}
        if iter % self.freq == 0 and ParallelEnv().local_rank == 0:
            for k, v in logs.items():
                self.writer.add_scalar("Train/{}".format(k), v, iter)

        self.writer.flush()

    def on_train_end(self, logs=None):
        self.writer.close()
示例#3
0
class VisualAcc(paddle.callbacks.Callback):
    def __init__(self,
                 logdir,
                 experimental_name,
                 *,
                 save_model_with_input=None):
        """
        :param logdir:
        :param experimental_name:
        :param save_model_with_input: 默认不存储模型结构,当开启该参数时,
        """
        from pyxllib.prog.pupil import check_install_package
        check_install_package('visualdl')
        from visualdl import LogWriter

        super().__init__()
        # 这样奇怪地加后缀,是为了字典序后,每个实验的train显示在eval之前
        d = XlPath(logdir) / (experimental_name + '_train')
        # if d.exists(): shutil.rmtree(d)
        self.write = LogWriter(logdir=str(d))
        d = XlPath(logdir) / (experimental_name + '_val')
        # if d.exists(): shutil.rmtree(d)
        self.eval_writer = LogWriter(logdir=str(d))
        self.eval_times = 0

        self.save_model_with_input = save_model_with_input

    def on_epoch_end(self, epoch, logs=None):
        self.write.add_scalar('acc', step=epoch, value=logs['acc'])
        self.write.flush()

    def on_eval_end(self, logs=None):
        self.eval_writer.add_scalar('acc',
                                    step=self.eval_times,
                                    value=logs['acc'])
        self.eval_writer.flush()
        self.eval_times += 1