evaluation=True)

model_id = opt['id'] if len(opt['id']) > 1 else '0' + opt['id']
model_save_dir = opt['save_dir'] + '/' + model_id
opt['model_save_dir'] = model_save_dir
helper.ensure_dir(model_save_dir, verbose=True)

# save config
helper.save_config(opt, model_save_dir + '/config.json', verbose=True)
vocab.save(model_save_dir + '/vocab.pkl')
file_logger = helper.FileLogger(
    model_save_dir + '/' + opt['log'],
    header="# epoch\ttrain_loss\tdev_loss\tdev_score")

# save gold predictions
train_gold = train_batch.save_gold(model_save_dir + '/pred_train_gold.txt')
dev_gold = dev_batch.save_gold(model_save_dir + '/pred_dev_gold.txt')

trainer = Trainer(opt=opt, vocab=vocab, emb_matrix=emb_matrix)

global_step = 0
max_steps = len(train_batch) * opt['num_epoch']
dev_score_history = []
current_lr = opt['lr']
global_start_time = time.time()
format_str = '{}: step {}/{} (epoch {}/{}), loss = {:.6f} ({:.3f} sec/batch), lr: {:.6f}'

# tensorboard
if not path.exists(opt['model_save_dir'] + '/stats'):
    os.makedirs(opt['model_save_dir'] + '/stats')
Esempio n. 2
0
    args.cuda = False
elif args.cuda:
    torch.cuda.manual_seed(args.seed)

# load opt
model_file = args.model_dir + '/' + args.model
print("Loading model from {}".format(model_file))
trainer = Trainer(model_file=model_file)
opt, vocab = trainer.opt, trainer.vocab

# load data
data_dir = args.data_dir if len(args.data_dir) > 0 else opt['data_dir']
data_file = data_dir + '/{}.jsonl'.format(args.dataset)
print("Loading data from {} with batch size {}...".format(data_file, args.batch_size))
batch = DataLoader(data_file, args.batch_size, opt, vocab, evaluation=True)
test_gold = batch.save_gold(args.gold)

helper.print_config(opt)

print("Evaluating on the {} set...".format(args.dataset))
predictions = []
for b in tqdm(batch):
    preds = trainer.predict(b)
    predictions += preds
predictions = text_utils.postprocess(predictions)
if args.use_bleu:
    test_bleu = bleu.get_bleu(predictions, test_gold)
    print("{} set bleu score: {:.2f}".format(args.dataset, test_bleu))
else:
    r1, r2, rl, r1_cf, r2_cf, rl_cf = rouge.get_rouge(predictions, test_gold, use_cf=True)
    print("{} set results:\n".format(args.dataset))