Пример #1
0
    def create_visdom_data(self, event: TemporalEvent,
                           model_trainer: ModelTrainer):
        avg_grads, layers = [], []

        for n, p in model_trainer.named_parameters():
            if p.requires_grad and ("bias" not in n):
                layers.append(n)
                if p.grad is not None:
                    avg_grads.append(p.grad.abs().mean().item())
                else:
                    avg_grads.append(0)

        return VisdomData(model_trainer.name,
                          "Gradient Flow",
                          PlotType.BAR_PLOT,
                          event.frequency,
                          y=layers,
                          x=avg_grads,
                          params={
                              'opts': {
                                  'xlabel':
                                  "Layers",
                                  'ylabel':
                                  "Avg. Gradients",
                                  'title':
                                  "{} {} per {}".format(
                                      model_trainer.name, "Avg. Gradient",
                                      "Layer"),
                                  'marginbottom':
                                  200
                              }
                          })
Пример #2
0
    def create_visdom_data(self, event: TemporalEvent, trainer):
        if self._plot_type == PlotType.LINE_PLOT and "name" not in self._params[
                'opts'].keys():
            self._params['opts']['name'] = str(event.phase)

        return [
            VisdomData(trainer.name, self._variable_name, self._plot_type,
                       event.frequency, [event.iteration],
                       trainer.custom_variables[self._variable_name],
                       self._params)
        ]
Пример #3
0
 def create_visdom_data(self, event, model_name, monitors):
     return [
         VisdomData(model_name,
                    loss_name,
                    PlotType.LINE_PLOT,
                    event.frequency, [[event.iteration]], [[loss_value]],
                    params={
                        'opts': {
                            'xlabel':
                            str(event.frequency),
                            'ylabel':
                            loss_name,
                            'title':
                            "{} {} per {}".format(model_name, loss_name,
                                                  str(event.frequency)),
                            'name':
                            str(event.phase),
                            'legend': [str(event.phase)]
                        }
                    }) for loss_name, loss_value in monitors.items()
     ]
Пример #4
0
 def create_visdom_data(self, event, model_trainer: ModelTrainer):
     return VisdomData(model_trainer.name,
                       "Learning Rate",
                       PlotType.LINE_PLOT,
                       event.frequency, [event.iteration],
                       model_trainer.optimizer_lr,
                       params={
                           'opts': {
                               'xlabel':
                               str(event.frequency),
                               'ylabel':
                               "Learning Rate",
                               'title':
                               "{} {} per {}".format(
                                   model_trainer.name, "Learning Rate",
                                   str(event.frequency)),
                               'name':
                               model_trainer.name,
                               'legend': [model_trainer.name]
                           }
                       })
Пример #5
0
    if visdom_config.save_destination is not None:
        save_folder = visdom_config.save_destination + os.path.join(
            exp[0], exp[1],
            os.path.basename(os.path.normpath(visdom_config.env)))
    else:
        save_folder = "saves/{}".format(
            os.path.basename(os.path.normpath(visdom_config.env)))

    [
        os.makedirs("{}/{}".format(save_folder, model), exist_ok=True)
        for model in ["Discriminator", "Generator", "Segmenter"]
    ]
    visdom_logger = VisdomLogger(visdom_config)

    visdom_logger(
        VisdomData("Experiment", "Experiment Config", PlotType.TEXT_PLOT,
                   PlotFrequency.EVERY_EPOCH, None, config_html))
    visdom_logger(
        VisdomData(
            "Experiment",
            "Patch count",
            PlotType.BAR_PLOT,
            PlotFrequency.EVERY_EPOCH,
            x=[
                len(iSEG_train) if iSEG_train is not None else 0,
                len(MRBrainS_train) if MRBrainS_train is not None else 0,
                len(ABIDE_train) if ABIDE_train is not None else 0
            ],
            y=["iSEG", "MRBrainS", "ABIDE"],
            params={"opts": {
                "title": "Patch count"
            }}))