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(
Beispiel #2
0
    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":
Beispiel #3
0
    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())) )