test.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import torch
  2. from sqlnet.utils import *
  3. from sqlnet.model.sqlnet import SQLNet
  4. import argparse
  5. if __name__ == '__main__':
  6. parser = argparse.ArgumentParser()
  7. parser.add_argument('--gpu', action='store_true', help='Whether use gpu')
  8. parser.add_argument('--toy', action='store_true', help='Small batchsize for fast debugging.')
  9. parser.add_argument('--ca', action='store_true', help='Whether use column attention.')
  10. parser.add_argument('--train_emb', action='store_true', help='Use trained word embedding for SQLNet.')
  11. parser.add_argument('--output_dir', type=str, default='', help='Output path of prediction result')
  12. args = parser.parse_args()
  13. n_word=300
  14. if args.toy:
  15. use_small=True
  16. gpu=args.gpu
  17. batch_size=16
  18. else:
  19. use_small=False
  20. gpu=args.gpu
  21. batch_size=64
  22. dev_sql, dev_table, dev_db, test_sql, test_table, test_db = load_dataset(use_small=use_small, mode='test')
  23. word_emb = load_word_emb('data/char_embedding.json')
  24. model = SQLNet(word_emb, N_word=n_word, use_ca=args.ca, gpu=gpu, trainable_emb=args.train_emb)
  25. model_path = 'saved_model/best_model'
  26. print ("Loading from %s" % model_path)
  27. model.load_state_dict(torch.load(model_path))
  28. print ("Loaded model from %s" % model_path)
  29. dev_acc = epoch_acc(model, batch_size, dev_sql, dev_table, dev_db)
  30. print ('Dev Logic Form Accuracy: %.3f, Execution Accuracy: %.3f' % (dev_acc[1], dev_acc[2]))
  31. print ("Start to predict test set")
  32. predict_test(model, batch_size, test_sql, test_table, args.output_dir)
  33. print ("Output path of prediction result is %s" % args.output_dir)