Mercurial > pylearn
annotate _test_nnet_ops.py @ 419:43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
author | James Bergstra <bergstrj@iro.umontreal.ca> |
---|---|
date | Mon, 14 Jul 2008 16:48:02 -0400 |
parents | 2ee53bae9ee0 |
children | 9cfc2fc0f4d1 |
rev | line source |
---|---|
24 | 1 |
2 import unittest | |
419
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
3 import theano |
24 | 4 import theano._test_tensor as TT |
5 import numpy | |
6 | |
7 from nnet_ops import * | |
8 | |
9 class T_sigmoid(unittest.TestCase): | |
10 def setUp(self): | |
11 numpy.random.seed(9999) | |
12 def test_elemwise(self): | |
117
3ef569b92fba
ported nnet_ops to new theano
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
70
diff
changeset
|
13 TT.verify_grad(self, sigmoid, [numpy.random.rand(3,4)]) |
24 | 14 |
69
8c2607f387e6
added softplus, elaborated sigmoid
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
30
diff
changeset
|
15 class T_softplus(unittest.TestCase): |
8c2607f387e6
added softplus, elaborated sigmoid
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
30
diff
changeset
|
16 def setUp(self): |
8c2607f387e6
added softplus, elaborated sigmoid
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
30
diff
changeset
|
17 numpy.random.seed(9999) |
8c2607f387e6
added softplus, elaborated sigmoid
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
30
diff
changeset
|
18 def test_elemwise(self): |
117
3ef569b92fba
ported nnet_ops to new theano
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
70
diff
changeset
|
19 TT.verify_grad(self, softplus, [numpy.random.rand(3,4)]) |
24 | 20 |
21 class T_CrossentropySoftmax1Hot(unittest.TestCase): | |
22 def setUp(self): | |
23 numpy.random.seed(9999) | |
24 def test0(self): | |
25 y_idx = [0,1,3] | |
117
3ef569b92fba
ported nnet_ops to new theano
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
70
diff
changeset
|
26 class Dummy(object): |
3ef569b92fba
ported nnet_ops to new theano
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
70
diff
changeset
|
27 def make_node(self, a,b): |
3ef569b92fba
ported nnet_ops to new theano
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
70
diff
changeset
|
28 return crossentropy_softmax_1hot_with_bias(a, b, y_idx)[0:1] |
3ef569b92fba
ported nnet_ops to new theano
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
70
diff
changeset
|
29 TT.verify_grad(self, Dummy(), [numpy.random.rand(3,4), |
30
bf0145fa73e8
added c implementation for CrossentropySoftmax1Hot
bergstrj@iro.umontreal.ca
parents:
25
diff
changeset
|
30 numpy.random.rand(4)]) |
24 | 31 |
70
76e5c0f37165
better docs & precondition testing for cross_entropy_softmax_1hot & friends
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
69
diff
changeset
|
32 def test1(self): |
76e5c0f37165
better docs & precondition testing for cross_entropy_softmax_1hot & friends
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
69
diff
changeset
|
33 y_idx = [0,1,3] |
117
3ef569b92fba
ported nnet_ops to new theano
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
70
diff
changeset
|
34 class Dummy(object): |
3ef569b92fba
ported nnet_ops to new theano
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
70
diff
changeset
|
35 def make_node(self, a): |
3ef569b92fba
ported nnet_ops to new theano
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
70
diff
changeset
|
36 return crossentropy_softmax_1hot(a, y_idx)[0:1] |
3ef569b92fba
ported nnet_ops to new theano
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
70
diff
changeset
|
37 TT.verify_grad(self, Dummy(), [numpy.random.rand(3,4)]) |
70
76e5c0f37165
better docs & precondition testing for cross_entropy_softmax_1hot & friends
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
69
diff
changeset
|
38 |
419
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
39 class T_prepend(unittest.TestCase): |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
40 def test0(self): |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
41 """basic functionality""" |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
42 x=tensor.matrix('x') |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
43 y=Prepend_scalar_constant_to_each_row(4.)(x) |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
44 f=theano.function([x],[y]) |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
45 m=numpy.random.rand(3,5) |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
46 my = f(m) |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
47 self.failUnless(my.shape == (3, 6), my.shape) |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
48 self.failUnless(numpy.all( my[:,0] == 4.0)) |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
49 |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
50 |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
51 class T_prepend(unittest.TestCase): |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
52 def test0(self): |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
53 """basic functionality""" |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
54 x=tensor.matrix('x') |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
55 y=Prepend_scalar_to_each_row()(5.,x) |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
56 f=theano.function([x],[y]) |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
57 m=numpy.ones((3,5),dtype="float32") |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
58 my = f(m) |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
59 self.failUnless(str(my.dtype) == 'float64') |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
60 self.failUnless(my.shape == (3, 6)) |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
61 self.failUnless(numpy.all(my[:,0] == 5.0)) |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
62 |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
63 class T_solve(unittest.TestCase): |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
64 def setUp(self): |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
65 self.rng = numpy.random.RandomState(666) |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
66 |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
67 def test0(self): |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
68 A=self.rng.randn(5,5) |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
69 b=numpy.array(range(5),dtype=float) |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
70 x=numpy.linalg.solve(A,b) |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
71 Ax = numpy.dot(A,x) |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
72 are = theano.gradient.numeric_grad.abs_rel_err(Ax, b) |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
73 self.failUnless(numpy.all(are < 1.0e-5), (are, Ax, b)) |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
74 #print A,b |
43d9aa93934e
added other_ops.py to nnet_ops; added basic tests, no docs.
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
286
diff
changeset
|
75 #print numpy.dot(A,x) |
24 | 76 |
77 | |
78 if __name__ == '__main__': | |
79 unittest.main() |