예제 #1
0
파일: main.py 프로젝트: daemon/Castor
                '------------- Training epoch {} --------------'.format(i + 1))
            train_accuracy = trainer.train(train_set, args.batch_size,
                                           args.debug_single_batch)
            if args.debug_single_batch: sys.exit(0)

            dev_scores = trainer.test(dev_set, args.batch_size)

            dev_map, dev_mrr = compute_map_mrr(args.dataset_folder, dev_set,
                                               dev_scores)
            logger.info("------- MAP {}, MRR {}".format(dev_map, dev_mrr))

            if dev_map - best_map > 1e-3:  # new map is better than best map
                best_model = i
                best_map = dev_map

                QAModel.save(net, args.model_outfile)
                logger.info('Achieved better dev_map ... saved model')

            if args.test_on_each_epoch:
                test_scores = trainer.test(test_set, args.batch_size)
                map, mrr = compute_map_mrr(args.dataset_folder, test_set,
                                           test_scores)
                logger.info("------- MAP {}, MRR {}".format(map, mrr))

            if (i - best_model) >= args.patience:
                logger.warning('No improvement since the last {} epochs. Stopping training'\
                               .format(i - best_model))
                break

        logger.info(' ------------ Training epochs completed! ------------')
        logger.info('Best dev MAP in training phase = {:.4f}'.format(best_map))
예제 #2
0
    torch.manual_seed(1234)
    np.random.seed(1234)

    train_set, dev_set, test_set = 'train', 'clean-dev', 'clean-test'
    if args.train_all:
        train_set, dev_set, test_set = 'train-all', 'raw-dev', 'raw-test'

    # cache word embeddings
    cache_file = os.path.splitext(args.word_vectors_file)[0] + '.cache'    
    utils.cache_word_embeddings(args.word_vectors_file, cache_file)

    vocab_size, vec_dim = utils.load_embedding_dimensions(cache_file)
    
    # instantiate model
    net = QAModel(vec_dim, args.filter_width, args.num_conv_filters, args.no_ext_feats) #filter width is 5
    QAModel.save(net, args.dataset_folder, args.model_fname)

    torch.set_num_threads(args.num_threads)
    
    trainer = Trainer(net, args.eta, args.mom, args.no_loss_reg, vec_dim)
    logger.info("Loading input data...")
    trainer.load_input_data(args.dataset_folder, cache_file, train_set, dev_set, test_set)

    best_map = 0.0
    best_model = 0

    for i in range(args.epochs):
        logger.info('------------- Training epoch {} --------------'.format(i+1))        
        train_accuracy = trainer.train(train_set, args.batch_size, args.debugSingleBatch)        
        if args.debugSingleBatch: sys.exit(0)