def main(): """Main script.""" parser = argparse.ArgumentParser() parser.add_argument('--mode', required=True, help='train/test') parser.add_argument('--gpu', required=True, help='gpu id') parser.add_argument('--log', required=True, help='log directory') parser.add_argument('--dataset', required=True, help='dataset name, msvd_qa/msrvtt_qa') parser.add_argument('--config', required=True, help='config id') args = parser.parse_args() config = cfg.get('dmn_plus', args.dataset, args.config, args.gpu) if args.dataset == 'msvd_qa': dataset = dt.MSVDQA(config['train']['batch_size'], config['preprocess_dir']) question_type_dict = { 0: 'what', 2: 'who', 23: 'how', 96: 'when', 226: 'where' } elif args.dataset == 'msrvtt_qa': dataset = dt.MSRVTTQA(config['train']['batch_size'], config['preprocess_dir']) question_type_dict = { 0: 'what', 3: 'who', 21: 'how', 61: 'when', 133: 'where' } if args.mode == 'train': best_val_acc = -1 val_acc = 0 not_improved = -1 for epoch in range(0, 30): if val_acc > best_val_acc: best_val_acc = val_acc not_improved = 0 else: not_improved += 1 if not_improved == 10: print('early stopping.') break train(epoch, dataset, config, args.log) val_acc = val(epoch, dataset, config, args.log) elif args.mode == 'test': print('start test.') test(dataset, config, args.log, question_type_dict)
def main(): """Main script.""" parser = argparse.ArgumentParser() parser.add_argument('--mode', required=True, help='train/test/predict') parser.add_argument('--question', required=False) parser.add_argument('--gpu', required=True, help='gpu id') parser.add_argument('--log', required=True, help='log directory') parser.add_argument('--dataset', required=True, help='dataset name, msvd_qa/msrvtt_qa') parser.add_argument('--config', required=True, help='config id') args = parser.parse_args() config = cfg.get('gra', args.dataset, args.config, args.gpu) if args.dataset == 'msvd_qa': dataset = dt.MSVDQA(config['train']['batch_size'], config['preprocess_dir']) elif args.dataset == 'msrvtt_qa': dataset = dt.MSRVTTQA(config['train']['batch_size'], config['preprocess_dir']) if args.mode == 'train': best_val_acc = -1 val_acc = 0 not_improved = -1 for epoch in range(18, 30): if val_acc > best_val_acc: best_val_acc = val_acc not_improved = 0 else: not_improved += 1 if not_improved == 10: print('early stopping.') train(epoch, dataset, config, args.log) val_acc = val(epoch, dataset, config, args.log) elif args.mode == 'test': print('start test.') test(dataset, config, args.log) elif args.mode == 'predict': print('predicting ' + args.question) predict(dataset, config, args.log, int(args.question))
def main(): """Main script.""" parser = argparse.ArgumentParser() parser.add_argument('--mode', default='test', help='train/test') parser.add_argument('--gpu', default='0', help='gpu id') parser.add_argument('--log', default='./log_esa', help='log directory') parser.add_argument('--dataset', choices=['msvd_qa', 'msrvtt_qa'], default='msrvtt_qa', help='dataset name, msvd_qa/msrvtt_qa') parser.add_argument('--config', default='0', help='config id') args = parser.parse_args() config = cfg.get('esa', args.dataset, args.config, args.gpu) if args.dataset == 'msvd_qa': dataset = dt.MSVDQA( config['train']['batch_size'], config['preprocess_dir']) elif args.dataset == 'msrvtt_qa': dataset = dt.MSRVTTQA( config['train']['batch_size'], config['preprocess_dir'], config['model']['answer_num']) if args.mode == 'train': best_val_acc = -1 val_acc = 0 not_improved = -1 for epoch in range(0, 3000): if val_acc > best_val_acc: best_val_acc = val_acc not_improved = 0 else: not_improved += 1 if not_improved == 10: print('early stopping.') break train(epoch, dataset, config, args.log) val_acc = val(epoch, dataset, config, args.log) elif args.mode == 'test': print('start test.') test(dataset, config, args.log)