本文整理汇总了Python中evaluate.evaluate方法的典型用法代码示例。如果您正苦于以下问题:Python evaluate.evaluate方法的具体用法?Python evaluate.evaluate怎么用?Python evaluate.evaluate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类evaluate
的用法示例。
在下文中一共展示了evaluate.evaluate方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: evaluate_ranker
# 需要导入模块: import evaluate [as 别名]
# 或者: from evaluate import evaluate [as 别名]
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
示例2: run
# 需要导入模块: import evaluate [as 别名]
# 或者: from evaluate import evaluate [as 别名]
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))
示例3: train
# 需要导入模块: import evaluate [as 别名]
# 或者: from evaluate import evaluate [as 别名]
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
示例4: train_and_evaluate
# 需要导入模块: import evaluate [as 别名]
# 或者: from evaluate import evaluate [as 别名]
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
示例5: train_rl_1
# 需要导入模块: import evaluate [as 别名]
# 或者: from evaluate import evaluate [as 别名]
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)
示例6: train
# 需要导入模块: import evaluate [as 别名]
# 或者: from evaluate import evaluate [as 别名]
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
示例7: train_and_evaluate
# 需要导入模块: import evaluate [as 别名]
# 或者: from evaluate import evaluate [as 别名]
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