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 } })
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) ]
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() ]
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] } })
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" }}))