Пример #1
0
def run(argv):
    parser = ArgumentParser()
    parser.add_argument('vem_model', type=str, help='SAM VEM model to use features from')
    parser.add_argument('-c', type=float, default=1.0, help='SVM C parameter')
    options = parser.parse_args(argv[1:])

    log.info('Loading SAM model %s' % options.vem_model)

    sam_model = VEMModel.load(options.vem_model)
    log.info('Making dataset')
    dataset = make_dataset(sam_model)

    metric = ClassificationError()
    scores = []
    for i in range(20):
        train_data, test_data = dataset.split(p=0.90, seed=i)

        topic_svm = TopicSVM(sam_model, C=options.c, normalize=True)
        topic_svm.train(train_data)

        predictions = topic_svm.predict(test_data)
        score = metric(test_data.targets, predictions)
        log.info(score)
        scores.append(score)
    log.info('Mean classification error: %g' % np.mean(scores))
Пример #2
0
def run(argv):
    parser = ArgumentParser()
    parser.add_argument('vem_model',
                        type=str,
                        help='SAM VEM model to use features from')
    parser.add_argument('-c', type=float, default=1.0, help='SVM C parameter')
    options = parser.parse_args(argv[1:])

    log.info('Loading SAM model %s' % options.vem_model)

    sam_model = VEMModel.load(options.vem_model)
    log.info('Making dataset')
    dataset = make_dataset(sam_model)

    metric = ClassificationError()
    scores = []
    for i in range(20):
        train_data, test_data = dataset.split(p=0.90, seed=i)

        topic_svm = TopicSVM(sam_model, C=options.c, normalize=True)
        topic_svm.train(train_data)

        predictions = topic_svm.predict(test_data)
        score = metric(test_data.targets, predictions)
        log.info(score)
        scores.append(score)
    log.info('Mean classification error: %g' % np.mean(scores))
Пример #3
0
    def run(self, options):
        if os.path.exists(options.model):
            print 'Loading model snapshot from %s' % options.model
            model = VEMModel.load(options.model)
        else:
            # Initialize a model from scratch
            print 'Initializing new model'
            reader = CorpusReader(options.corpus, data_series='sam')
            model = VEMModel(reader=reader, T=options.T)

        while model.iteration < options.iterations:
            print '** Iteration %d **' % model.iteration
            model.run_one_iteration()

            if model.iteration % SAVE_MODEL_INTERVAL == 0:
                print 'Saving model snapshot...'
                model.save(options.model)

            if model.iteration % SAVE_TOPICS_INTERVAL == 0:
                if options.write_topics:
                    print 'Saving topics to %s' % options.write_topics
                    with open(options.write_topics, 'w') as f:
                        model.write_topics(f)

                if options.write_topic_weights:
                    print 'Saving topic weights to %s' % options.write_topic_weights
                    with open(options.write_topic_weights, 'w') as f:
                        model.write_topic_weights_arff(f)

        if options.write_topics:
            print 'Saving topics to %s' % options.write_topics
            with open(options.write_topics, 'w') as f:
                model.write_topics(f)

        if options.write_topic_weights:
            print 'Saving topic weights to %s' % options.write_topic_weights
            with open(options.write_topic_weights, 'w') as f:
                model.write_topic_weights_arff(f)
        model.save(options.model)
Пример #4
0
    def run(self, options):
        if os.path.exists(options.model):
            print 'Loading model snapshot from %s' % options.model
            model = VEMModel.load(options.model)
        else:
            # Initialize a model from scratch
            print 'Initializing new model'
            reader = CorpusReader(options.corpus, data_series='sam')
            model = VEMModel(reader=reader, T=options.T)

        while model.iteration < options.iterations:
            print '** Iteration %d **' % model.iteration
            model.run_one_iteration()

            if model.iteration % SAVE_MODEL_INTERVAL == 0:
                print 'Saving model snapshot...'
                model.save(options.model)

            if model.iteration % SAVE_TOPICS_INTERVAL == 0:
                if options.write_topics:
                    print 'Saving topics to %s' % options.write_topics
                    with open(options.write_topics, 'w') as f:
                        model.write_topics(f)

                if options.write_topic_weights:
                    print 'Saving topic weights to %s' % options.write_topic_weights
                    with open(options.write_topic_weights, 'w') as f:
                        model.write_topic_weights_arff(f)

        if options.write_topics:
            print 'Saving topics to %s' % options.write_topics
            with open(options.write_topics, 'w') as f:
                model.write_topics(f)

        if options.write_topic_weights:
            print 'Saving topic weights to %s' % options.write_topic_weights
            with open(options.write_topic_weights, 'w') as f:
                model.write_topic_weights_arff(f)
        model.save(options.model)
Пример #5
0
import numpy as np
from math_util import avk, deriv_avk
from optimize import check_grad

from corpus.corpus import CorpusReader
from vem.model import VEMModel

CORPUS_FILENAME = 'nips-425D.h5'

reader = CorpusReader(CORPUS_FILENAME, data_series='sam')
model = VEMModel(reader)

while True:
    model.run_one_iteration()
    model.print_topics()


def check_grads(model):
    assert np.isfinite(model.l_alpha())
    assert np.isfinite(model.l_valpha())

    x = model.grad_l_vmu()
    assert np.isfinite(x).all()

    import pdb
    try:
        # Main update rules
        print 'xi update:', check_grad(model, 'xi', model.l_xi,
                                       model.grad_l_xi)
        print 'valpha update:', check_grad(model, 'valpha', model.l_valpha,
                                           model.grad_l_valpha)
Пример #6
0
import numpy as np
from math_util import avk, deriv_avk
from optimize import check_grad

from corpus.corpus import CorpusReader
from vem.model import VEMModel

CORPUS_FILENAME = 'nips-425D.h5'

reader = CorpusReader(CORPUS_FILENAME, data_series='sam')
model = VEMModel(reader)

while True:
    model.run_one_iteration()
    model.print_topics()



def check_grads(model):
    assert np.isfinite(model.l_alpha())
    assert np.isfinite(model.l_valpha())

    x = model.grad_l_vmu()
    assert np.isfinite(x).all()

    import pdb
    try:
        # Main update rules
        print 'xi update:', check_grad(model, 'xi', model.l_xi, model.grad_l_xi)
        print 'valpha update:', check_grad(model, 'valpha', model.l_valpha, model.grad_l_valpha)
        print 'alpha update:', check_grad(model, 'alpha', model.l_alpha, model.grad_l_alpha)