Python evaluate.evaluate() Examples
The following are 7
code examples of evaluate.evaluate().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
evaluate
, or try the search function
.
Example #1
Source File: singlesimulation.py From OnlineLearningToRank with MIT License | 5 votes |
def evaluate_ranker(self, iteration, ranker, ranking_i, train_ranking, ranking_labels): test_rankings = ranker.get_test_rankings( self.datafold.test_feature_matrix, self.datafold.test_doclist_ranges, inverted=True) test_ndcg = evaluate( test_rankings, self.datafold.test_label_vector, self.test_idcg_vector, self.datafold.test_doclist_ranges.shape[0] - 1, self.n_results) train_ndcg = evaluate_ranking( train_ranking, ranking_labels, self.train_idcg_vector[ranking_i], self.n_results) results = { 'iteration': iteration, 'heldout': np.mean(test_ndcg), 'display': np.mean(train_ndcg), } for name, value in ranker.get_messages().items(): results[name] = value return results
Example #2
Source File: singlesimulation.py From OnlineLearningToRank with MIT License | 5 votes |
def run(self, ranker, output_key): starttime = time.time() ranker.setup(train_features = self.datafold.train_feature_matrix, train_query_ranges = self.datafold.train_doclist_ranges) run_results = [] impressions = 0 for impressions in range(self.n_impressions): ranking_i, train_ranking = self.sample_and_rank(ranker) ranking_labels = self.datafold.train_query_labels(ranking_i) clicks = self.click_model.generate_clicks(train_ranking, ranking_labels) self.timestep_evaluate(run_results, impressions, ranker, ranking_i, train_ranking, ranking_labels) ranker.process_clicks(clicks) # evaluate after final iteration ranking_i, train_ranking = self.sample_and_rank(ranker) ranking_labels = self.datafold.train_query_labels(ranking_i) impressions += 1 self.timestep_evaluate(run_results, impressions, ranker, ranking_i, train_ranking, ranking_labels) ranker.clean() self.run_details['runtime'] = time.time() - starttime output = {'run_details': self.run_details, 'run_results': run_results} self.output_queue.put((output_key, output))
Example #3
Source File: experiment.py From neural_ime with MIT License | 5 votes |
def train(rnn_trainer, rnn_predictor, train_data, valid_target_data, valid_source_data, dictionary, epoch_size, model_directory, beam_size, viterbi_size): start_time = time.time() log_path = os.path.join(model_directory, 'log.txt') log_file = open(log_path, 'w') best_epoch = None best_metrics = None for epoch in range(epoch_size): # Train one epoch and save the model train_epoch(rnn_trainer, train_data, model_directory, epoch) # Decode all sentences rnn_predictor.restore_from_directory(model_directory) system, decode_time = decode_all(rnn_predictor, valid_source_data, dictionary, beam_size, viterbi_size) # Evaluate results metrics = evaluate(system, valid_target_data) # Print metrics log_text = 'decoding precision: {:.2f} recall: {:.2f} f-score: {:.2f} accuracy: {:.2f}\n'.format(*metrics) log_text += 'decoding total time: {:.2f} average time: {:.2f}'.format(decode_time, decode_time / len(system)) print(log_text) print(log_text, file=log_file) # Write decoded results to file decode_path = os.path.join(model_directory, 'decode-{}.txt'.format(epoch)) with open(decode_path, 'w') as file: file.write('\n'.join(system)) # Update best epoch if not best_epoch or best_metrics[2] < metrics[2]: best_epoch = epoch best_metrics = metrics total_time = time.time() - start_time print('best epoch:', best_epoch) print('best epoch metrics: precision: {:.2f} recall: {:.2f} f-score: {:.2f} accuracy: {:.2f}'.format(*best_metrics)) print('total experiment time:', total_time) print() return best_metrics, best_epoch
Example #4
Source File: train.py From NER-BERT-pytorch with MIT License | 4 votes |
def train_and_evaluate(model, train_data, val_data, optimizer, scheduler, params, model_dir, restore_file=None): """Train the model and evaluate every epoch.""" # reload weights from restore_file if specified if restore_file is not None: restore_path = os.path.join(args.model_dir, args.restore_file + '.pth.tar') logging.info("Restoring parameters from {}".format(restore_path)) utils.load_checkpoint(restore_path, model, optimizer) best_val_f1 = 0.0 patience_counter = 0 for epoch in range(1, params.epoch_num + 1): # Run one epoch logging.info("Epoch {}/{}".format(epoch, params.epoch_num)) # Compute number of batches in one epoch params.train_steps = params.train_size // params.batch_size params.val_steps = params.val_size // params.batch_size # data iterator for training train_data_iterator = data_loader.data_iterator(train_data, shuffle=True) # Train for one epoch on training set train(model, train_data_iterator, optimizer, scheduler, params) # data iterator for evaluation train_data_iterator = data_loader.data_iterator(train_data, shuffle=False) val_data_iterator = data_loader.data_iterator(val_data, shuffle=False) # Evaluate for one epoch on training set and validation set params.eval_steps = params.train_steps train_metrics = evaluate(model, train_data_iterator, params, mark='Train') params.eval_steps = params.val_steps val_metrics = evaluate(model, val_data_iterator, params, mark='Val') val_f1 = val_metrics['f1'] improve_f1 = val_f1 - best_val_f1 # Save weights of the network model_to_save = model.module if hasattr(model, 'module') else model # Only save the model it-self optimizer_to_save = optimizer.optimizer if args.fp16 else optimizer utils.save_checkpoint({'epoch': epoch + 1, 'state_dict': model_to_save.state_dict(), 'optim_dict': optimizer_to_save.state_dict()}, is_best=improve_f1>0, checkpoint=model_dir) if improve_f1 > 0: logging.info("- Found new best F1") best_val_f1 = val_f1 if improve_f1 < params.patience: patience_counter += 1 else: patience_counter = 0 else: patience_counter += 1 # Early stopping and logging best f1 if (patience_counter >= params.patience_num and epoch > params.min_epoch_num) or epoch == params.epoch_num: logging.info("Best val f1: {:05.2f}".format(best_val_f1)) break
Example #5
Source File: train.py From seq2seq-keyphrase-pytorch with Apache License 2.0 | 4 votes |
def train_rl_1(one2many_batch, model, optimizer, generator, opt, reward_cache): src_list, src_len, trg_list, _, trg_copy_target_list, src_oov_map_list, oov_list = one2many_batch if torch.cuda.is_available(): src_list = src_list.cuda() src_oov_map_list = src_oov_map_list.cuda() # Sample number_batch sequences sampled_seqs_list = generator.sample(src_list, src_len, src_oov_map_list, oov_list, opt.word2id, k=5, is_greedy=False) policy_loss = [] policy_rewards = [] # Compute their rewards and losses for seq_i, (src, trg, trg_copy, sampled_seqs, oov) in enumerate(zip(src_list, trg_list, trg_copy_target_list, sampled_seqs_list, oov_list)): # convert to string sequences sampled_str_seqs = [[opt.id2word[x] if x < opt.vocab_size else oov[x - opt.vocab_size] for x in to_cpu_list(seq.sentence)] for seq in sampled_seqs] sampled_str_seqs = [seq[:seq.index(pykp.io.EOS_WORD) + 1] if pykp.io.EOS_WORD in seq else seq for seq in sampled_str_seqs] # pad trg seqs with EOS to the same length trg_seqs = [[opt.id2word[x] if x < opt.vocab_size else oov[x - opt.vocab_size] for x in seq] for seq in trg_copy] # trg_seqs = [seq + [pykp.IO.EOS_WORD] * (opt.max_sent_length - len(seq)) for seq in trg_seqs] # local rewards (bleu) bleu_samples = get_match_result(true_seqs=trg_seqs, pred_seqs=sampled_str_seqs, type='bleu') # global rewards match_samples = get_match_result(true_seqs=trg_seqs, pred_seqs=sampled_str_seqs, type='exact') _, _, fscore_samples = evaluate.evaluate(match_samples, sampled_str_seqs, trg_seqs, topk=5) # compute the final rewards alpha = 0.0 rewards = alpha * np.asarray(bleu_samples) + (1.0 - alpha) * fscore_samples baseline = reward_cache.get_average() for reward in rewards: reward_cache.push(float(reward)) [policy_loss.append(-torch.stack(seq.logprobs, dim=0).sum() * float(reward - baseline)) for seq, reward in zip(sampled_seqs, rewards)] [policy_rewards.append(reward) for reward in rewards] optimizer.zero_grad() policy_loss = torch.stack(policy_loss).mean() * (1 - opt.loss_scale) policy_loss.backward() if opt.max_grad_norm > 0: pre_norm = torch.nn.utils.clip_grad_norm(model.parameters(), opt.max_grad_norm) after_norm = (sum([p.grad.data.norm(2) ** 2 for p in model.parameters() if p.grad is not None])) ** (1.0 / 2) # logging.info('clip grad (%f -> %f)' % (pre_norm, after_norm)) optimizer.step() return np.average(policy_rewards)
Example #6
Source File: train.py From TimeSeries with Apache License 2.0 | 4 votes |
def train(model: nn.Module, optimizer: optim, loss_fn, train_loader: DataLoader, test_loader: DataLoader, params: utils.Params, epoch: int) -> float: '''Train the model on one epoch by batches. Args: model: (torch.nn.Module) the neural network optimizer: (torch.optim) optimizer for parameters of model loss_fn: a function that takes outputs and labels per timestep, and then computes the loss for the batch train_loader: load train data and labels test_loader: load test data and labels params: (Params) hyperparameters epoch: (int) the current training epoch ''' model.train() loss_epoch = np.zeros(len(train_loader)) # Train_loader: # train_batch ([batch_size, train_window, 1+cov_dim]): z_{0:T-1} + x_{1:T}, note that z_0 = 0; # idx ([batch_size]): one integer denoting the time series id; # labels_batch ([batch_size, train_window]): z_{1:T}. for i, (train_batch, idx, labels_batch) in enumerate(tqdm(train_loader)): optimizer.zero_grad() batch_size = train_batch.shape[0] train_batch = train_batch.permute(1, 0, 2).to(torch.float32).to(params.device) # not scaled labels_batch = labels_batch.permute(1, 0).to(torch.float32).to(params.device) # not scaled idx = idx.unsqueeze(0).to(params.device) loss = torch.zeros(1, device=params.device) hidden = model.init_hidden(batch_size) cell = model.init_cell(batch_size) for t in range(params.train_window): # if z_t is missing, replace it by output mu from the last time step zero_index = (train_batch[t, :, 0] == 0) if t > 0 and torch.sum(zero_index) > 0: train_batch[t, zero_index, 0] = mu[zero_index] mu, sigma, hidden, cell = model(train_batch[t].unsqueeze_(0).clone(), idx, hidden, cell) loss += loss_fn(mu, sigma, labels_batch[t]) loss.backward() optimizer.step() loss = loss.item() / params.train_window # loss per timestep loss_epoch[i] = loss if i % 1000 == 0: test_metrics = evaluate(model, loss_fn, test_loader, params, epoch, sample=args.sampling) model.train() logger.info(f'train_loss: {loss}') if i == 0: logger.info(f'train_loss: {loss}') return loss_epoch
Example #7
Source File: train.py From RE-CNN-pytorch with MIT License | 4 votes |
def train_and_evaluate(model, train_data, val_data, optimizer, scheduler, params, metric_labels, model_dir, restore_file=None): """Train the model and evaluate every epoch.""" # reload weights from restore_file if specified if restore_file is not None: restore_path = os.path.join(args.model_dir, args.restore_file + '.pth.tar') logging.info("Restoring parameters from {}".format(restore_path)) utils.load_checkpoint(restore_path, model, optimizer) best_val_f1 = 0.0 patience_counter = 0 for epoch in range(1, params.epoch_num + 1): # Run one epoch logging.info("Epoch {}/{}".format(epoch, params.epoch_num)) # Compute number of batches in one epoch train_steps_num = params.train_size // params.batch_size val_steps_num = params.val_size // params.batch_size # data iterator for training train_data_iterator = data_loader.data_iterator(train_data, params.batch_size, shuffle='True') # Train for one epoch on training set train_loss = train(model, train_data_iterator, optimizer, scheduler, params, train_steps_num) # data iterator for training and validation train_data_iterator = data_loader.data_iterator(train_data, params.batch_size) val_data_iterator = data_loader.data_iterator(val_data, params.batch_size) # Evaluate for one epoch on training set and validation set train_metrics = evaluate(model, train_data_iterator, train_steps_num, metric_labels) train_metrics['loss'] = train_loss train_metrics_str = "; ".join("{}: {:05.2f}".format(k, v) for k, v in train_metrics.items()) logging.info("- Train metrics: " + train_metrics_str) val_metrics = evaluate(model, val_data_iterator, val_steps_num, metric_labels) val_metrics_str = "; ".join("{}: {:05.2f}".format(k, v) for k, v in val_metrics.items()) logging.info("- Eval metrics: " + val_metrics_str) val_f1 = val_metrics['f1'] improve_f1 = val_f1 - best_val_f1 # Save weights ot the network utils.save_checkpoint({'epoch': epoch + 1, 'state_dict': model.state_dict(), 'optim_dict' : optimizer.state_dict()}, is_best=improve_f1>0, checkpoint=model_dir) if improve_f1 > 0: logging.info("- Found new best F1") best_val_f1 = val_f1 if improve_f1 < params.patience: patience_counter += 1 else: patience_counter = 0 else: patience_counter += 1 # Early stopping and logging best f1 if (patience_counter >= params.patience_num and epoch > params.min_epoch_num) or epoch == params.epoch_num: logging.info("best val f1: {:05.2f}".format(best_val_f1)) break