view algorithms/tests/test_daa.py @ 501:4fb6f7320518

N-class logistic regression top-layer works
author Joseph Turian <turian@gmail.com>
date Tue, 28 Oct 2008 13:54:01 -0400
parents 3c60c2db0319
children de974b4fc4ea
line wrap: on
line source

#!/usr/bin/python

from pylearn import algorithms as models
import theano
import numpy
import time

import pylearn.algorithms.logistic_regression

def test_train_daa(mode = theano.Mode('c|py', 'fast_run')):

    ndaa = 3
    daa = models.Stacker([(models.SigmoidXEDenoisingAA, 'hidden')] * ndaa + [(models.BinRegressor, 'output')],
                         regularize = False)

    model = daa.make([4, 20, 20, 20, 1],
                     lr = 0.01,
                     mode = mode,
                     seed = 10)

    model.layers[0].noise_level = 0.3
    model.layers[1].noise_level = 0.3
    model.layers[2].noise_level = 0.3

    # Update the first hidden layer
    for l in range(3):
        for i in range(10):
            model.local_update[l]([[0, 1, 0, 1]])
            model.local_update[l]([[1, 0, 1, 0]])

    for i in range(1):
        model.update([[0, 1, 0, 1]], [[1]])
        model.update([[1, 0, 1, 0]], [[0]])
    print model.classify([[0, 1, 0, 1]])
    print model.classify([[1, 0, 1, 0]])


def test_train_daa2(mode = theano.Mode('c|py', 'fast_run')):

    ndaa = 3
    daa = models.Stacker([(models.SigmoidXEDenoisingAA, 'hidden')] * ndaa + [(pylearn.algorithms.logistic_regression.Module_Nclass, 'pred')],
                         regularize = False)

    model = daa.make([4, 20, 20, 20, 10],
                     lr = 0.01,
                     mode = mode,
                     seed = 10)

    model.layers[0].noise_level = 0.3
    model.layers[1].noise_level = 0.3
    model.layers[2].noise_level = 0.3

    for l in range(3):
        for i in range(10):
            model.local_update[l]([[0, 1, 0, 1]])
            model.local_update[l]([[1, 0, 1, 0]])

    for i in range(1):
        model.update([[0, 1, 0, 1]], [1])
        model.update([[1, 0, 1, 0]], [0])
    print model.apply([[0, 1, 0, 1]])
    print model.apply([[1, 0, 1, 0]])




if __name__ == '__main__':
#    print 'optimized:'
#    t1 = test_train_daa(theano.Mode('py', 'fast_compile'))
#    t1 = test_train_daa(theano.Mode('c|py', 'fast_run'))
#    print 'time:',t1
#    print

#    print 'not optimized:'
#    t2 = test_train_daa(theano.Mode('c|py', 'fast_compile'))
##    print 'time:',t2

#    test_train_daa(theano.compile.Mode('c&py', 'merge'))
#    test_train_daa(theano.compile.Mode('c|py', 'merge'))
    test_train_daa(theano.compile.Mode('py', 'merge'))

    test_train_daa2(theano.compile.Mode('c|py', 'merge'))