Ejemplo n.º 1
0
def create_model(args, vocab, embedding=None):
    if args.use_glove:
        embedding = get_glove_embedding(args.embedding_name, args.hidden_size,
                                        vocab)
    else:
        embedding = None

    logging.info('Creating IQ model...')

    vqg = IQ(len(vocab),
             args.max_length,
             args.hidden_size,
             args.num_categories,
             vocab(vocab.SYM_SOQ),
             vocab(vocab.SYM_EOS),
             num_layers=args.num_layers,
             rnn_cell=args.rnn_cell,
             dropout_p=args.dropout_p,
             input_dropout_p=args.input_dropout_p,
             encoder_max_len=args.encoder_max_len,
             embedding=embedding,
             num_att_layers=args.num_att_layers,
             z_size=args.z_size,
             z_img=args.z_img,
             z_category=args.z_category,
             no_image_recon=args.no_image_recon,
             no_category_space=args.no_category_space,
             bayes=args.bayes)

    return vqg
Ejemplo n.º 2
0
def create_model(args, vocab, embedding=None):
    """Creates the model.

    Args:
        args: Instance of Argument Parser.
        vocab: Instance of Vocabulary.

    Returns:
        A VQG model.
    """
    # Load GloVe embedding.
    if args.use_glove:
        embedding = get_glove_embedding(args.embedding_name,
                                        300,vocab)
    elif args.use_w2v:
        embedding = get_wv_embedding(args.embedding_name,
                                        200,vocab)   
    else:
        embedding = None

    # Build the models
    logging.info('Creating IQ model...')
    vqg = VQG(len(vocab), args.max_length, args.hidden_size,
            
             vocab(vocab.SYM_SOQ), vocab(vocab.SYM_EOS),
             num_layers=args.num_layers,
             rnn_cell=args.rnn_cell,
             dropout_p=args.dropout_p,
             input_dropout_p=args.input_dropout_p,
             encoder_max_len=args.encoder_max_len,
             embedding=embedding,
             num_att_layers=args.num_att_layers,
             z_size=args.z_size)
    return vqg
Ejemplo n.º 3
0
def create_model(args, vocab, embedding=None):
    """Creates the model.

    Args:
        args: Instance of Argument Parser.
        vocab: Instance of Vocabulary.

    Returns:
        A multi class classification model.
    """
    # Load GloVe embedding.
    if args.use_glove:
        embedding = get_glove_embedding(args.embedding_name, 300, vocab)
    else:
        embedding = None

    # Build the models
    logging.info('Creating multi-class classification model...')
    model = Classifier(len(vocab),
                       embedding_dim=args.embedding_dim,
                       embedding=embedding,
                       hidden_dim=args.num_hidden_nodes,
                       output_dim=args.num_output_nodes,
                       num_layers=args.num_layers,
                       bidirectional=args.bidirectional,
                       dropout=args.dropout,
                       rnn_cell=args.rnn_cell)

    return model
Ejemplo n.º 4
0
def main(args):
    # Load the arguments.
    model_dir = os.path.dirname(args.model_path)
    params = Dict2Obj(
        json.load(open(os.path.join(model_dir, "args.json"), "r")))

    # Config logging
    log_format = '%(levelname)-8s %(message)s'
    logfile = os.path.join(model_dir, 'eval.log')
    logging.basicConfig(filename=logfile,
                        level=logging.INFO,
                        format=log_format)
    logging.getLogger().addHandler(logging.StreamHandler())
    logging.info(json.dumps(args.__dict__))
    # Load vocabulary wrapper.
    vocab = load_vocab(params.vocab_path)

    # Build data loader
    logging.info("Building data loader...")

    # Load GloVe embedding.
    if params.use_glove:
        embedding = get_glove_embedding(params.embedding_name, 300, vocab)
    else:
        embedding = None

    # Processing input text
    logging.info("Processing input text...")
    text, length = process_text(args.text, vocab, max_length=20)
    d_text = text

    logging.info("Done")
    # Build the models
    logging.info('Creating IQ model...')
    model = Classifier(len(vocab),
                       embedding_dim=params.embedding_dim,
                       embedding=embedding,
                       hidden_dim=params.num_hidden_nodes,
                       output_dim=params.num_output_nodes,
                       num_layers=params.num_layers,
                       bidirectional=params.bidirectional,
                       dropout=params.dropout,
                       rnn_cell=params.rnn_cell)

    logging.info("Done")

    logging.info("Loading model.")
    model.load_state_dict(
        torch.load(args.model_path + "model-tf-" + args.state + ".pkl"))

    # Setup GPUs.
    if torch.cuda.is_available():
        logging.info("Using available GPU...")
        model.cuda()

    predict(model, d_text)
Ejemplo n.º 5
0
def create_model(args, vocab, embedding=None):
    """Creates the model.

    Args:
        args: Instance of Argument Parser.
        vocab: Instance of Vocabulary.

    Returns:
        An IQ model.
    """
    # Load GloVe embedding.
    if args.use_glove:
        embedding = get_glove_embedding(args.embedding_name, args.hidden_size,
                                        vocab)
    else:
        embedding = None

    # Build the models
    logging.info('Creating IQ model...')
    vqg = IQ(len(vocab),
             args.max_length,
             args.hidden_size,
             args.num_categories,
             vocab(vocab.SYM_SOQ),
             vocab(vocab.SYM_EOS),
             num_layers=args.num_layers,
             rnn_cell=args.rnn_cell,
             dropout_p=args.dropout_p,
             input_dropout_p=args.input_dropout_p,
             encoder_max_len=args.encoder_max_len,
             embedding=embedding,
             num_att_layers=args.num_att_layers,
             use_attention=args.use_attention,
             z_size=args.z_size,
             no_answer_recon=args.no_answer_recon,
             no_image_recon=args.no_image_recon,
             no_category_space=args.no_category_space)
    return vqg
Ejemplo n.º 6
0
def main(args):
    """Loads the model and then calls evaluate().

    Args:
        args: Instance of ArgumentParser.
    """

    # Load the arguments.
    model_dir = os.path.dirname(args.model_path)
    params = Dict2Obj(
        json.load(open(os.path.join(model_dir, "args.json"), "r")))

    # Config logging
    log_format = '%(levelname)-8s %(message)s'
    logfile = os.path.join(model_dir, 'eval.log')
    logging.basicConfig(filename=logfile,
                        level=logging.INFO,
                        format=log_format)
    logging.getLogger().addHandler(logging.StreamHandler())
    logging.info(json.dumps(args.__dict__))

    # Image preprocessing
    transform = transforms.Compose([
        transforms.ToTensor(),
        transforms.Normalize(mean=[0.485, 0.456, 0.406],
                             std=[0.229, 0.224, 0.225])
    ])

    # Load vocabulary wrapper.
    vocab = load_vocab(params.vocab_path)

    # Build data loader
    logging.info("Building data loader...")

    # Load GloVe embedding.
    if params.use_glove:
        embedding = get_glove_embedding(params.embedding_name, 300, vocab)
    elif params.use_w2v:
        embedding = get_wv_embedding(params.embedding_name, 200, vocab)
    else:
        embedding = None

    # Build data loader
    indices = []
    ii = 0
    for ii in range(500):
        indices.append(ii)
    logging.info("Building data loader...")
    data_loader = get_loader(args.dataset,
                             transform,
                             args.batch_size,
                             shuffle=False,
                             num_workers=args.num_workers,
                             max_examples=args.max_examples,
                             indices=None)
    logging.info("Done")

    # Build the models
    logging.info('Creating IQ model...')
    vqa = VQA(
        len(vocab),
        params.max_length,
        params.hidden_size,
        vocab(vocab.SYM_SOQ),
        vocab(vocab.SYM_EOS),
        num_layers=params.num_layers,
        rnn_cell=params.rnn_cell,
        dropout_p=params.dropout_p,
        input_dropout_p=params.input_dropout_p,
        encoder_max_len=params.encoder_max_len,
        embedding=embedding,
        num_att_layers=params.num_att_layers,
        #use_attention=params.use_attention,
        z_size=params.z_size,
        no_question_recon=params.no_question_recon,
        no_image_recon=params.no_image_recon)
    logging.info("Done")

    logging.info("Loading model.")
    vqa.load_state_dict(
        torch.load(args.model_path + "vqa-tf-" + args.state + ".pkl"))

    # Setup GPUs.
    if torch.cuda.is_available():
        logging.info("Using available GPU...")
        vqa.cuda()

    scores, gts, preds = evaluate(vqa, data_loader, vocab, args, params)
    #gts, preds = evaluate(vqg, data_loader, vocab, args, params)

    # Print and save the scores.
    print(scores)
    with open(os.path.join(model_dir, args.results_path), 'w') as results_file:
        json.dump(scores, results_file)
    with open(os.path.join(model_dir, args.preds_path), 'w') as preds_file:
        json.dump(preds, preds_file)
    with open(os.path.join(model_dir, args.gts_path), 'w') as gts_file:
        json.dump(gts, gts_file)
def main(args):
    # Load the arguments.
    model_dir = os.path.dirname(args.model_path)
    params = Dict2Obj(
        json.load(open(os.path.join(model_dir, "args.json"), "r")))

    # Config logging
    log_format = '%(levelname)-8s %(message)s'
    logfile = os.path.join(model_dir, 'eval.log')
    logging.basicConfig(filename=logfile,
                        level=logging.INFO,
                        format=log_format)
    logging.getLogger().addHandler(logging.StreamHandler())
    logging.info(json.dumps(args.__dict__))
    # Load vocabulary wrapper.
    vocab = load_vocab(params.vocab_path)

    # Build data loader
    logging.info("Building data loader...")

    # Load GloVe embedding.
    if params.use_glove:
        embedding = get_glove_embedding(params.embedding_name, 300, vocab)
    else:
        embedding = None

    # Build data loader
    logging.info("Building data loader...")
    data_loader = get_loader(args.dataset,
                             args.batch_size,
                             shuffle=False,
                             num_workers=args.num_workers,
                             max_examples=args.max_examples)
    logging.info("Done")
    # Build the models
    logging.info('Creating a multi class classification model...')
    model = Classifier(len(vocab),
                       embedding_dim=params.embedding_dim,
                       embedding=embedding,
                       hidden_dim=params.num_hidden_nodes,
                       output_dim=params.num_output_nodes,
                       num_layers=params.num_layers,
                       bidirectional=params.bidirectional,
                       dropout=params.dropout,
                       rnn_cell=params.rnn_cell)

    logging.info("Done")

    logging.info("Loading model.")
    model.load_state_dict(
        torch.load(args.model_path + "model-tf-" + args.state + ".pkl"))

    # Setup GPUs.
    if torch.cuda.is_available():
        logging.info("Using available GPU...")
        model.cuda()
    scores, gts, preds = evaluate(model, data_loader, vocab, args, params)

    # Print and save the scores.
    print(scores)
    with open(os.path.join(model_dir, args.results_path), 'w') as results_file:
        json.dump(scores, results_file)
    with open(os.path.join(model_dir, args.preds_path), 'w') as preds_file:
        json.dump(preds, preds_file)
    with open(os.path.join(model_dir, args.gts_path), 'w') as gts_file:
        json.dump(gts, gts_file)