def test(test_args): start = time.time() with open(os.path.join(test_args.save_dir, 'config.pkl')) as f: args = cPickle.load(f) data_loader = TextLoader(args, train=False) test_data = data_loader.read_dataset(test_args.test_file) args.word_vocab_size = data_loader.word_vocab_size print "Word vocab size: " + str(data_loader.word_vocab_size) + "\n" # Model lm_model = WordLM print "Begin testing..." # If using gpu: # gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.9) # gpu_config = tf.ConfigProto(log_device_placement=False, gpu_options=gpu_options) # add parameters to the tf session -> tf.Session(config=gpu_config) with tf.Graph().as_default(), tf.Session() as sess: initializer = tf.random_uniform_initializer(-args.init_scale, args.init_scale) with tf.variable_scope("model", reuse=None, initializer=initializer): mtest = lm_model(args, is_training=False, is_testing=True) # save only the last model saver = tf.train.Saver(tf.all_variables()) tf.initialize_all_variables().run() ckpt = tf.train.get_checkpoint_state(args.save_dir) if ckpt and ckpt.model_checkpoint_path: saver.restore(sess, ckpt.model_checkpoint_path) test_perplexity = run_epoch(sess, mtest, test_data, data_loader, tf.no_op()) print("Test Perplexity: %.3f" % test_perplexity) print("Test time: %.0f" % (time.time() - start))
def test(test_args): start = time.time() with open(os.path.join(test_args.save_dir, 'config.pkl'), 'rb') as f: args = pickle.load(f) args.save_dir = test_args.save_dir data_loader = TextLoader(args, train=False) test_data = data_loader.read_dataset(test_args.test_file) print(args.save_dir) print("Unit: " + args.unit) print("Composition: " + args.composition) args.word_vocab_size = data_loader.word_vocab_size if args.unit != "word": args.subword_vocab_size = data_loader.subword_vocab_size # Statistics of words print("Word vocab size: " + str(data_loader.word_vocab_size)) # Statistics of sub units if args.unit != "word": print("Subword vocab size: " + str(data_loader.subword_vocab_size)) if args.composition == "bi-lstm": if args.unit == "char": args.bilstm_num_steps = data_loader.max_word_len print("Max word length:", data_loader.max_word_len) elif args.unit == "char-ngram": args.bilstm_num_steps = data_loader.max_ngram_per_word print("Max ngrams per word:", data_loader.max_ngram_per_word) elif args.unit == "morpheme" or args.unit == "oracle": args.bilstm_num_steps = data_loader.max_morph_per_word print("Max morphemes per word", data_loader.max_morph_per_word) if args.unit == "word": lm_model = WordModel elif args.composition == "addition": lm_model = AdditiveModel elif args.composition == "bi-lstm": lm_model = BiLSTMModel else: sys.exit("Unknown unit or composition.") print("Begin testing...") mtest = lm_model(args, is_testing=True) if args.use_cuda: mtest = mtest.cuda() # get the last saved model model_path, _ = get_last_model_path(args.save_dir) saved_model = torch.load(model_path) mtest.load_state_dict(saved_model['state_dict']) test_perplexity = run_epoch(mtest, test_data, data_loader, eval=True) print("Test Perplexity: %.3f" % test_perplexity) print("Test time: %.0f\n" % (time.time() - start)) print("\n")
def test(test_args): start = time.time() with open(os.path.join(test_args.save_dir, 'config.pkl'), 'rb') as f: args = pickle.load(f) args.save_dir = test_args.save_dir data_loader = TextLoader(args, train=False) test_data = data_loader.read_dataset(test_args.test_file) print(args.save_dir) print("Unit: " + args.unit) print("Composition: " + args.composition) args.word_vocab_size = data_loader.word_vocab_size if args.unit != "word": args.subword_vocab_size = data_loader.subword_vocab_size # Statistics of words print("Word vocab size: " + str(data_loader.word_vocab_size)) # Statistics of sub units if args.unit != "word": print("Subword vocab size: " + str(data_loader.subword_vocab_size)) if args.composition == "bi-lstm": if args.unit == "char": args.bilstm_num_steps = data_loader.max_word_len print("Max word length:", data_loader.max_word_len) elif args.unit == "char-ngram": args.bilstm_num_steps = data_loader.max_ngram_per_word print("Max ngrams per word:", data_loader.max_ngram_per_word) elif args.unit == "morpheme" or args.unit == "oracle": args.bilstm_num_steps = data_loader.max_morph_per_word print("Max morphemes per word", data_loader.max_morph_per_word) if args.unit == "word": lm_model = WordModel elif args.composition == "addition": lm_model = AdditiveModel elif args.composition == "bi-lstm": lm_model = BiLSTMModel else: sys.exit("Unknown unit or composition.") print("Begin testing...") with tf.Graph().as_default(), tf.Session() as sess: with tf.variable_scope("model"): mtest = lm_model(args, is_training=False, is_testing=True) # save only the last model saver = tf.train.Saver(tf.all_variables(), max_to_keep=1) tf.initialize_all_variables().run() ckpt = tf.train.get_checkpoint_state(args.save_dir) if ckpt and ckpt.model_checkpoint_path: saver.restore(sess, ckpt.model_checkpoint_path) test_perplexity = run_epoch(sess, mtest, test_data, data_loader, tf.no_op()) print("Test Perplexity: %.3f" % test_perplexity) print("Test time: %.0f\n" % (time.time() - start)) print("\n")