提交 d5841f8d authored 作者: Frederic Bastien's avatar Frederic Bastien

added test for the different compilation option of the logistic_regression examples.

上级 ea44df9c
...@@ -20,6 +20,15 @@ class LogisticRegressionN(module.FancyModule): ...@@ -20,6 +20,15 @@ class LogisticRegressionN(module.FancyModule):
self.b = rng.randn(n_out) self.b = rng.randn(n_out)
self.lr = 0.01 self.lr = 0.01
self.__hide__ = ['params'] self.__hide__ = ['params']
# def __eq__(self, other):
# if not isinstance(other.component, LogisticRegressionN) and not isinstance(other.component, LogisticRegression2):
# raise NotImplemented
# #we compare the member.
# if (N.abs(self.w-other.w)<1e-8).all() and (N.abs(self.b-other.b)<1e-8).all() and self.stepsize == other.stepsize:
# return True
# return False
# def __hash__(self):
# raise NotImplemented
def __init__(self, x = None, targ = None): def __init__(self, x = None, targ = None):
super(LogisticRegressionN, self).__init__() #boilerplate super(LogisticRegressionN, self).__init__() #boilerplate
......
#!/usr/bin/env python
# #
# UNIT TEST # UNIT TEST
# #
...@@ -8,6 +8,7 @@ from theano import gof ...@@ -8,6 +8,7 @@ from theano import gof
from theano.gradient import * from theano.gradient import *
from theano import gradient from theano import gradient
import theano
import sys import sys
from theano import tensor as T from theano import tensor as T
...@@ -20,12 +21,80 @@ import numpy as N ...@@ -20,12 +21,80 @@ import numpy as N
class test_logistic_regression_example(unittest.TestCase): class test_logistic_regression_example(unittest.TestCase):
def test_example(self): def test_example_main(self):
"""Test that the file execute without trouble""" """Test that the file execute without trouble"""
from ..examples import logistic_regression from ..examples import logistic_regression
logistic_regression.main() logistic_regression.main()
def test_example_moduleN(self):
"""Test that the LogisticRegressionN module execute the same with different mode"""
from ..examples import logistic_regression
pprint.assign(nnet.crossentropy_softmax_1hot_with_bias_dx, printing.FunctionPrinter('xsoftmaxdx'))
pprint.assign(nnet.crossentropy_softmax_argmax_1hot_with_bias, printing.FunctionPrinter('nll', 'softmax', 'argmax'))
lrc = logistic_regression.LogisticRegressionN()
lr1 = lrc.make(10, 2, mode=theano.Mode('c|py', 'fast_run'), seed=1827)
lr2 = lrc.make(10, 2, mode=theano.Mode('py', 'fast_run'), seed=1827)
lr3 = lrc.make(10, 2, mode=theano.Mode('py', 'merge'), seed=1827) #'FAST_RUN')
lr4 = lrc.make(10, 2, mode=compile.FAST_RUN.excluding('fast_run'), seed=1827)
#FAST_RUN, FAST_COMPILE,
data_x = N.random.randn(5, 10)
data_y = (N.random.randn(5) > 0)
def train(lr):
for i in xrange(1000):
lr.lr = 0.02
xe = lr.update(data_x, data_y)
train(lr1)
train(lr2)
train(lr3)
train(lr4)
# print 'lr1',lr1
print 'lr2',lr2
def assert_equal(l1,l2):
if not (numpy.abs(l1.b-l2.b)<1e-8).all():
print numpy.abs(l1.b-l2.b)<1e-10
print numpy.abs(l1.b-l2.b)
self.fail()
if not (numpy.abs(l1.w-l2.w)<1e-8).all():
print numpy.abs(l1.w-l2.w)<1e-10
print numpy.abs(l1.w-l2.w)
self.fail()
assert l1.lr==l2.lr
assert_equal(lr1,lr2)
assert_equal(lr1,lr3)
assert_equal(lr1,lr4)
assert lr1==lr2
assert lr1==lr3
assert lr1==lr4
def test_example_module2(self):
"""Test that the LogisticRegression2 module execute the same with different mode"""
from ..examples import logistic_regression
lrc = logistic_regression.LogisticRegression2() #TODO: test 2==N
lr0 = lrc.make(10,2)
# lr0 = lrc.make(10,2,seed=1827)#error
# lr1 = lrc.make(10, 2, mode=theano.Mode('c|py', 'fast_run'), seed=1827)
# lr2 = lrc.make(10, 2, mode=theano.Mode('py', 'fast_run'), seed=1827)
# lr3 = lrc.make(10, 2, mode=theano.Mode('py', 'merge'), seed=1827) #'FAST_RU
# lr4 = lrc.make(10, 2, mode=compile.FAST_RUN.excluding('fast_run'), seed=1827)
# #FAST_RUN, FAST_COMPILE,
# data_x = N.random.randn(5, 10)
# data_y = (N.random.randn(5) > 0)
# def train(lr):
# for i in xrange(10000):
# lr.lr = 0.02
# xe = lr.update(data_x, data_y)
# train(lr1)
# train(lr2)
# train(lr3)
# train(lr4)
# self.fail("NotImplementedError")
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() from theano.tests import main
main("test_wiki")
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论