def create_dictionary(dataroot): dictionary = Dictionary() questions = [] files = [ 'v2_OpenEnded_mscoco_train2014_questions.json', 'v2_OpenEnded_mscoco_val2014_questions.json', 'v2_OpenEnded_mscoco_test2015_questions.json', 'v2_OpenEnded_mscoco_test-dev2015_questions.json' ] for path in files: question_path = os.path.join(dataroot, path) qs = json.load(open(question_path))['questions'] for q in qs: dictionary.tokenize(q['question'], True) return dictionary
def make_json(logits, qIds, dataloader): utils.assert_eq(logits.size(0), len(qIds)) results = [] for i in range(logits.size(0)): result = {} result['question_id'] = qIds[i].item() result['answer'] = get_answer(logits[i], dataloader) results.append(result) return results if __name__ == '__main__': args = parse_args() torch.backends.cudnn.benchmark = True dictionary = Dictionary.load_from_file('data/dictionary.pkl') eval_dset = VQAFeatureDataset_withmask(args.split, dictionary) n_device = torch.cuda.device_count() batch_size = args.batch_size * n_device constructor = 'build_%s' % args.model model = getattr(caq_model, constructor)(train_dset, args.num_hid).cuda() eval_loader = DataLoader(eval_dset, batch_size, shuffle=False, num_workers=1, collate_fn=utils.trim_collate) def process(args, model, eval_loader): model_path = args.input+'/model%s.pth' % \ ('' if 0 > args.epoch else '_epoch%d' % args.epoch) print('loading %s' % model_path) model_data = torch.load(model_path)