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')
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))