示例#1
0
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)
示例#2
0
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))
示例#3
0
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)