def persist(self, filepath): checkpoint_callback = self.callbacks_config.get('model_checkpoint') if checkpoint_callback: checkpoint_filepath = checkpoint_callback['filepath'] if os.path.exists(checkpoint_filepath): shutil.copyfile(checkpoint_filepath, filepath) else: persist_torch_model(self.model, filepath) else: persist_torch_model(self.model, filepath)
def on_epoch_end(self, *args, **kwargs): if self.epoch_every and ((self.epoch_id % self.epoch_every) == 0): self.model.eval() val_loss = self.get_validation_loss() loss_sum = val_loss[self.metric_name] loss_sum = loss_sum.data.cpu().numpy()[0] self.model.train() if self.best_score is None: self.best_score = loss_sum if (self.minimize and loss_sum < self.best_score) or (not self.minimize and loss_sum > self.best_score) or ( self.epoch_id == 0): self.best_score = loss_sum persist_torch_model(self.model, self.filepath) logger.info('epoch {0} model saved to {1}'.format(self.epoch_id, self.filepath)) self.epoch_id += 1
def on_epoch_end(self, *args, **kwargs): if self.epoch_every and ((self.epoch_id % self.epoch_every) == 0): self.model.eval() val_loss = self.get_validation_loss() loss_sum = val_loss[self.metric_name] loss_sum = loss_sum.data.cpu().numpy()[0] self.model.train() if self.best_score is None: self.best_score = loss_sum if (self.minimize and loss_sum < self.best_score) or (not self.minimize and loss_sum > self.best_score) or ( self.epoch_id == 0): self.best_score = loss_sum persist_torch_model(self.model, self.filepath) logger.info('epoch {0} model saved to {1}'.format(self.epoch_id, self.filepath)) self.epoch_id += 1