def __init__(self, config, model): super(Trainer, self).__init__(config, model) self.logger = getLogger() self.learner = config['learner'] self.learning_rate = config['learning_rate'] self.epochs = config['epochs'] self.eval_step = min(config['eval_step'], self.epochs) self.stopping_step = config['stopping_step'] self.valid_metric = config['valid_metric'].lower() self.valid_metric_bigger = config['valid_metric_bigger'] self.test_batch_size = config['eval_batch_size'] self.device = config['device'] self.checkpoint_dir = config['checkpoint_dir'] ensure_dir(self.checkpoint_dir) saved_model_file = '{}-{}.pth'.format(self.config['model'], get_local_time()) self.saved_model_file = os.path.join(self.checkpoint_dir, saved_model_file) self.start_epoch = 0 self.cur_step = 0 self.best_valid_score = -1 self.best_valid_result = None self.train_loss_dict = dict() self.optimizer = self._build_optimizer() self.eval_type = config['eval_type'] if self.eval_type == EvaluatorType.INDIVIDUAL: self.evaluator = LossEvaluator(config) else: self.evaluator = TopKEvaluator(config) self.item_tensor = None self.tot_item_num = None self.iid_field = config['ITEM_ID_FIELD']
def __init__(self, config, model): super(Trainer, self).__init__(config, model) self.logger = getLogger() self.tensorboard = get_tensorboard(self.logger) self.learner = config['learner'] self.learning_rate = config['learning_rate'] self.epochs = config['epochs'] self.eval_step = min(config['eval_step'], self.epochs) self.stopping_step = config['stopping_step'] self.clip_grad_norm = config['clip_grad_norm'] self.valid_metric = config['valid_metric'].lower() self.valid_metric_bigger = config['valid_metric_bigger'] self.test_batch_size = config['eval_batch_size'] self.gpu_available = torch.cuda.is_available() and config['use_gpu'] self.device = config['device'] self.checkpoint_dir = config['checkpoint_dir'] ensure_dir(self.checkpoint_dir) saved_model_file = '{}-{}.pth'.format(self.config['model'], get_local_time()) self.saved_model_file = os.path.join(self.checkpoint_dir, saved_model_file) self.weight_decay = config['weight_decay'] self.start_epoch = 0 self.cur_step = 0 self.best_valid_score = -np.inf if self.valid_metric_bigger else np.inf self.best_valid_result = None self.train_loss_dict = dict() self.optimizer = self._build_optimizer(self.model.parameters()) self.eval_type = config['eval_type'] self.eval_collector = Collector(config) self.evaluator = Evaluator(config) self.item_tensor = None self.tot_item_num = None
def __init__(self, config, model): super(Trainer, self).__init__(config, model) self.logger = getLogger() self.learner = config['learner'] self.learning_rate = config['learning_rate'] self.epochs = config['epochs'] self.eval_step = min(config['eval_step'], self.epochs) self.stopping_step = config['stopping_step'] self.clip_grad_norm = config['clip_grad_norm'] self.valid_metric = config['valid_metric'].lower() self.valid_metric_bigger = config['valid_metric_bigger'] self.test_batch_size = config['eval_batch_size'] self.device = config['device'] self.checkpoint_dir = config['checkpoint_dir'] ensure_dir(self.checkpoint_dir) saved_model_file = '{}-{}.pth'.format(self.config['model'], get_local_time()) self.saved_model_file = os.path.join(self.checkpoint_dir, saved_model_file) self.weight_decay = config['weight_decay'] self.draw_pic = config['draw_pic'] self.print_latex_code = config['print_latex_code'] self.start_epoch = 0 self.cur_step = 0 self.best_valid_score = -1 self.best_valid_result = None self.train_loss_dict = dict() self.optimizer = self._build_optimizer() self.eval_type = config['eval_type'] self.evaluator = ProxyEvaluator(config) self.item_tensor = None self.tot_item_num = None
def save_split_dataloaders(config, dataloaders): """Save split dataloaders. Args: config (Config): An instance object of Config, used to record parameter information. dataloaders (tuple of AbstractDataLoader): The split dataloaders. """ ensure_dir(config['checkpoint_dir']) save_path = config['checkpoint_dir'] saved_dataloaders_file = f'{config["dataset"]}-for-{config["model"]}-dataloader.pth' file_path = os.path.join(save_path, saved_dataloaders_file) logger = getLogger() logger.info(set_color('Saving split dataloaders into', 'pink') + f': [{file_path}]') with open(file_path, 'wb') as f: pickle.dump(dataloaders, f)
def __init__(self, config, model): super(xgboostTrainer, self).__init__(config, model) self.xgb = __import__('xgboost') self.logger = getLogger() self.label_field = config['LABEL_FIELD'] self.xgb_model = config['xgb_model'] self.convert_token_to_onehot = self.config['convert_token_to_onehot'] # DMatrix params self.weight = config['xgb_weight'] self.base_margin = config['xgb_base_margin'] self.missing = config['xgb_missing'] self.silent = config['xgb_silent'] self.feature_names = config['xgb_feature_names'] self.feature_types = config['xgb_feature_types'] self.nthread = config['xgb_nthread'] # train params self.params = config['xgb_params'] self.num_boost_round = config['xgb_num_boost_round'] self.evals = () self.obj = config['xgb_obj'] self.feval = config['xgb_feval'] self.maximize = config['xgb_maximize'] self.early_stopping_rounds = config['xgb_early_stopping_rounds'] self.evals_result = {} self.verbose_eval = config['xgb_verbose_eval'] self.callbacks = None # evaluator self.eval_type = config['eval_type'] self.epochs = config['epochs'] self.eval_step = min(config['eval_step'], self.epochs) self.valid_metric = config['valid_metric'].lower() self.evaluator = ProxyEvaluator(config) # model saved self.checkpoint_dir = config['checkpoint_dir'] ensure_dir(self.checkpoint_dir) saved_model_file = '{}-{}.pth'.format(self.config['model'], get_local_time()) self.saved_model_file = os.path.join(self.checkpoint_dir, saved_model_file)
def save_datasets(save_path, name, dataset): """Save split datasets. Args: save_path (str): The path of directory for saving. name (str or list of str): The stage of dataloader. It can only take two values: 'train' or 'evaluation'. dataset (Dataset or list of Dataset): The split datasets. """ if (not isinstance(name, list)) and (not isinstance(dataset, list)): name = [name] dataset = [dataset] if len(name) != len(dataset): raise ValueError( f'Length of name {name} should equal to length of dataset {dataset}.' ) for i, d in enumerate(dataset): cur_path = os.path.join(save_path, name[i]) ensure_dir(cur_path) d.save(cur_path)
def __init__(self, config, model): super(DecisionTreeTrainer, self).__init__(config, model) self.logger = getLogger() self.label_field = config['LABEL_FIELD'] self.convert_token_to_onehot = self.config['convert_token_to_onehot'] # evaluator self.eval_type = config['eval_type'] self.epochs = config['epochs'] self.eval_step = min(config['eval_step'], self.epochs) self.valid_metric = config['valid_metric'].lower() self.evaluator = ProxyEvaluator(config) # model saved self.checkpoint_dir = config['checkpoint_dir'] ensure_dir(self.checkpoint_dir) saved_model_file = '{}-{}.pth'.format(self.config['model'], get_local_time()) self.saved_model_file = os.path.join(self.checkpoint_dir, saved_model_file)
def __init__(self, config, model): super(DecisionTreeTrainer, self).__init__(config, model) self.logger = getLogger() self.tensorboard = get_tensorboard(self.logger) self.label_field = config['LABEL_FIELD'] self.convert_token_to_onehot = self.config['convert_token_to_onehot'] # evaluator self.eval_type = config['eval_type'] self.epochs = config['epochs'] self.eval_step = min(config['eval_step'], self.epochs) self.valid_metric = config['valid_metric'].lower() self.eval_collector = Collector(config) self.evaluator = Evaluator(config) # model saved self.checkpoint_dir = config['checkpoint_dir'] ensure_dir(self.checkpoint_dir) temp_file = '{}-{}-temp.pth'.format(self.config['model'], get_local_time()) self.temp_file = os.path.join(self.checkpoint_dir, temp_file) temp_best_file = '{}-{}-temp-best.pth'.format(self.config['model'], get_local_time()) self.temp_best_file = os.path.join(self.checkpoint_dir, temp_best_file) saved_model_file = '{}-{}.pth'.format(self.config['model'], get_local_time()) self.saved_model_file = os.path.join(self.checkpoint_dir, saved_model_file) self.stopping_step = config['stopping_step'] self.valid_metric_bigger = config['valid_metric_bigger'] self.cur_step = 0 self.best_valid_score = -np.inf if self.valid_metric_bigger else np.inf self.best_valid_result = None