f.write('pairID,gold_label' + '\n') for item in output: f.write(str(item[0]) + ',' + target_names[item[1]] + '\n') else: return 100. * n_correct / n_total, 100. * f1_score( np.asarray(y_true), np.asarray(y_preds), average='weighted'), clf_report if __name__ == "__main__": dictionary = helper.load_object(args.save_path + 'dictionary.p') embeddings_index = helper.load_word_embeddings(args.word_vectors_directory, args.word_vectors_file, dictionary.word2idx) class_distributions = None model = BCN(dictionary, embeddings_index, class_distributions, args) if args.cuda and torch.cuda.is_available(): torch.cuda.set_device(args.gpu) model = model.cuda() helper.load_model_states_from_checkpoint( model, args.save_path + 'model_best.pth.tar', 'state_dict', args.cuda) print('vocabulary size = ', len(dictionary)) task_names = ['snli', 'multinli'] if args.task == 'allnli' else [args.task] for task in task_names: test_corpus = data.Corpus(args.tokenize) if 'imdb' in args.task: ############################################################################### # Load Learning to Skim paper's Pickle file ############################################################################### train_d, dev_d, test_d = helper.get_splited_imdb_data(
args.dropout_ratio, # float. Used by McCann et al.: 0.1, 0.2 or 0.3 'maxout_reduction': args.maxout_reduction, # int. Used by McCann et al.: 2, 4 or 8 'bn_decay': args.bn_decay, # float 'bn_epsilon': args.bn_epsilon, # float 'optimizer': args. optimizer, # "adam" or "gradientdescent". Used by McCann et al.: "adam" 'learning_rate': args.learning_rate, # float. Used by McCann et al.: 0.001 'adam_beta1': args.adam_beta1, # float (used only if optimizer == "adam") 'adam_beta2': args.adam_beta2, # float (used only if optimizer == "adam") 'adam_epsilon': args.adam_epsilon # float (used only if optimizer == "adam") } if args.mode == 1: BCN(hyperparameters, 3, 128, 900, args.outputdir).dry_run() sys.exit() if not os.path.exists(args.outputdir): os.makedirs(args.outputdir) if not os.path.exists(os.path.join(args.outputdir, "info.txt")): with open(os.path.join(args.outputdir, "info.txt"), "w") as outputfile: outputfile.write(str(args.type) + "\n") outputfile.write(str(args.transfer_task) + "\n") outputfile.write(str(hyperparameters)) """ DATASET """ if args.type == "GloVe":
if outfile: target_names = ['entailment', 'neutral', 'contradiction'] with open(outfile, 'w') as f: f.write('pairID,gold_label' + '\n') for item in output: f.write(str(item[0]) + ',' + target_names[item[1]] + '\n') else: return 100. * n_correct / n_total, 100. * f1_score(numpy.asarray(y_true), numpy.asarray(y_preds), average='weighted') if __name__ == "__main__": dictionary = helper.load_object(args.save_path + 'dictionary.p') embeddings_index = helper.load_word_embeddings(args.word_vectors_directory, args.word_vectors_file, dictionary.word2idx) model = BCN(dictionary, embeddings_index, args) if args.cuda: torch.cuda.set_device(args.gpu) model = model.cuda() helper.load_model_states_from_checkpoint(model, args.save_path + 'model_best.pth.tar', 'state_dict', args.cuda) print('vocabulary size = ', len(dictionary)) task_names = ['snli', 'multinli'] if args.task == 'allnli' else [args.task] for task in task_names: test_corpus = data.Corpus(args.tokenize) if 'IMDB' in args.task: ############################################################################### # Load Learning to Skim paper's Pickle file ############################################################################### train_d, dev_d, test_d = helper.get_splited_imdb_data(args.save_path+'data/'+'imdb.p') test_corpus.parse(test_d, task, args.max_example)
dictionary = data.Dictionary() dictionary.build_dict(train_corpus.data + dev_corpus.data + test_corpus.data, args.max_words) helper.save_object(dictionary, args.output_base_path + args.task+'/' + 'dictionary.p') print('vocabulary size = ', len(dictionary)) embeddings_index = helper.load_word_embeddings(args.word_vectors_directory, args.word_vectors_file, dictionary.word2idx) print('number of OOV words = ', len(dictionary) - len(embeddings_index)) # ############################################################################### # # Build the model # ############################################################################### model = BCN(dictionary, embeddings_index, args) selector = Selector(dictionary, embeddings_index, args) print (selector) print (model) optim_fn_selector, optim_params_selector = helper.get_optimizer(args.optimizer) optimizer_selector = optim_fn_selector(filter(lambda p: p.requires_grad, selector.parameters()), **optim_params_selector) optim_fn, optim_params = helper.get_optimizer(args.optimizer) optimizer = optim_fn(filter(lambda p: p.requires_grad, model.parameters()), **optim_params) best_acc = 0 param_dict_selector = helper.count_parameters(selector) param_dict = helper.count_parameters(model) print('number of trainable parameters = ', numpy.sum(list(param_dict_selector.values())), numpy.sum(list(param_dict.values())), numpy.sum(list(param_dict.values())) + numpy.sum(list(param_dict_selector.values())) )