annotate scripts/stacked_dae/stacked_dae.py @ 133:a4e5128ef2cb

Adapted ttf2jpg to get fonts in /Tmp/allfonts local folder
author boulanni <nicolas_boulanger@hotmail.com>
date Sat, 20 Feb 2010 02:07:29 -0500
parents 5c79a2557f2f
children 7d8366fb90bf
rev   line source
131
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
1 #!/usr/bin/python
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
2 # coding: utf-8
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
3
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
4 import numpy
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
5 import theano
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
6 import time
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
7 import theano.tensor as T
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
8 from theano.tensor.shared_randomstreams import RandomStreams
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
9
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
10 class LogisticRegression(object):
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
11 def __init__(self, input, n_in, n_out):
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
12 # initialize with 0 the weights W as a matrix of shape (n_in, n_out)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
13 self.W = theano.shared( value=numpy.zeros((n_in,n_out),
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
14 dtype = theano.config.floatX) )
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
15 # initialize the baises b as a vector of n_out 0s
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
16 self.b = theano.shared( value=numpy.zeros((n_out,),
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
17 dtype = theano.config.floatX) )
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
18 # compute vector of class-membership probabilities in symbolic form
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
19 self.p_y_given_x = T.nnet.softmax(T.dot(input, self.W)+self.b)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
20
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
21 # compute prediction as class whose probability is maximal in
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
22 # symbolic form
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
23 self.y_pred=T.argmax(self.p_y_given_x, axis=1)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
24
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
25 # list of parameters for this layer
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
26 self.params = [self.W, self.b]
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
27
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
28 def negative_log_likelihood(self, y):
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
29 return -T.mean(T.log(self.p_y_given_x)[T.arange(y.shape[0]),y])
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
30
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
31 def errors(self, y):
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
32 # check if y has same dimension of y_pred
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
33 if y.ndim != self.y_pred.ndim:
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
34 raise TypeError('y should have the same shape as self.y_pred',
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
35 ('y', target.type, 'y_pred', self.y_pred.type))
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
36
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
37 # check if y is of the correct datatype
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
38 if y.dtype.startswith('int'):
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
39 # the T.neq operator returns a vector of 0s and 1s, where 1
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
40 # represents a mistake in prediction
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
41 return T.mean(T.neq(self.y_pred, y))
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
42 else:
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
43 raise NotImplementedError()
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
44
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
45
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
46 class SigmoidalLayer(object):
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
47 def __init__(self, rng, input, n_in, n_out):
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
48 self.input = input
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
49
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
50 W_values = numpy.asarray( rng.uniform( \
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
51 low = -numpy.sqrt(6./(n_in+n_out)), \
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
52 high = numpy.sqrt(6./(n_in+n_out)), \
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
53 size = (n_in, n_out)), dtype = theano.config.floatX)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
54 self.W = theano.shared(value = W_values)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
55
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
56 b_values = numpy.zeros((n_out,), dtype= theano.config.floatX)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
57 self.b = theano.shared(value= b_values)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
58
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
59 self.output = T.nnet.sigmoid(T.dot(input, self.W) + self.b)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
60 self.params = [self.W, self.b]
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
61
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
62
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
63
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
64 class dA(object):
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
65 def __init__(self, n_visible= 784, n_hidden= 500, corruption_level = 0.1,\
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
66 input = None, shared_W = None, shared_b = None):
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
67 self.n_visible = n_visible
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
68 self.n_hidden = n_hidden
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
69
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
70 # create a Theano random generator that gives symbolic random values
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
71 theano_rng = RandomStreams()
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
72
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
73 if shared_W != None and shared_b != None :
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
74 self.W = shared_W
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
75 self.b = shared_b
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
76 else:
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
77 # initial values for weights and biases
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
78 # note : W' was written as `W_prime` and b' as `b_prime`
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
79
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
80 # W is initialized with `initial_W` which is uniformely sampled
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
81 # from -6./sqrt(n_visible+n_hidden) and 6./sqrt(n_hidden+n_visible)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
82 # the output of uniform if converted using asarray to dtype
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
83 # theano.config.floatX so that the code is runable on GPU
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
84 initial_W = numpy.asarray( numpy.random.uniform( \
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
85 low = -numpy.sqrt(6./(n_hidden+n_visible)), \
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
86 high = numpy.sqrt(6./(n_hidden+n_visible)), \
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
87 size = (n_visible, n_hidden)), dtype = theano.config.floatX)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
88 initial_b = numpy.zeros(n_hidden, dtype = theano.config.floatX)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
89
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
90
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
91 # theano shared variables for weights and biases
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
92 self.W = theano.shared(value = initial_W, name = "W")
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
93 self.b = theano.shared(value = initial_b, name = "b")
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
94
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
95
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
96 initial_b_prime= numpy.zeros(n_visible)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
97 # tied weights, therefore W_prime is W transpose
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
98 self.W_prime = self.W.T
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
99 self.b_prime = theano.shared(value = initial_b_prime, name = "b'")
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
100
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
101 # if no input is given, generate a variable representing the input
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
102 if input == None :
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
103 # we use a matrix because we expect a minibatch of several examples,
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
104 # each example being a row
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
105 self.x = T.dmatrix(name = 'input')
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
106 else:
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
107 self.x = input
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
108 # Equation (1)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
109 # keep 90% of the inputs the same and zero-out randomly selected subset of 10% of the inputs
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
110 # note : first argument of theano.rng.binomial is the shape(size) of
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
111 # random numbers that it should produce
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
112 # second argument is the number of trials
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
113 # third argument is the probability of success of any trial
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
114 #
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
115 # this will produce an array of 0s and 1s where 1 has a
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
116 # probability of 1 - ``corruption_level`` and 0 with
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
117 # ``corruption_level``
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
118 self.tilde_x = theano_rng.binomial( self.x.shape, 1, 1 - corruption_level) * self.x
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
119 # Equation (2)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
120 # note : y is stored as an attribute of the class so that it can be
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
121 # used later when stacking dAs.
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
122 self.y = T.nnet.sigmoid(T.dot(self.tilde_x, self.W ) + self.b)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
123 # Equation (3)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
124 self.z = T.nnet.sigmoid(T.dot(self.y, self.W_prime) + self.b_prime)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
125 # Equation (4)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
126 # note : we sum over the size of a datapoint; if we are using minibatches,
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
127 # L will be a vector, with one entry per example in minibatch
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
128 self.L = - T.sum( self.x*T.log(self.z) + (1-self.x)*T.log(1-self.z), axis=1 )
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
129 # note : L is now a vector, where each element is the cross-entropy cost
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
130 # of the reconstruction of the corresponding example of the
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
131 # minibatch. We need to compute the average of all these to get
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
132 # the cost of the minibatch
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
133 self.cost = T.mean(self.L)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
134
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
135 self.params = [ self.W, self.b, self.b_prime ]
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
136
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
137
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
138
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
139
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
140 class SdA(object):
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
141 def __init__(self, train_set_x, train_set_y, batch_size, n_ins,
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
142 hidden_layers_sizes, n_outs,
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
143 corruption_levels, rng, pretrain_lr, finetune_lr):
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
144
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
145 self.layers = []
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
146 self.pretrain_functions = []
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
147 self.params = []
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
148 self.n_layers = len(hidden_layers_sizes)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
149
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
150 if len(hidden_layers_sizes) < 1 :
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
151 raiseException (' You must have at least one hidden layer ')
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
152
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
153
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
154 # allocate symbolic variables for the data
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
155 index = T.lscalar() # index to a [mini]batch
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
156 self.x = T.matrix('x') # the data is presented as rasterized images
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
157 self.y = T.ivector('y') # the labels are presented as 1D vector of
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
158 # [int] labels
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
159
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
160 for i in xrange( self.n_layers ):
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
161 # construct the sigmoidal layer
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
162
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
163 # the size of the input is either the number of hidden units of
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
164 # the layer below or the input size if we are on the first layer
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
165 if i == 0 :
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
166 input_size = n_ins
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
167 else:
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
168 input_size = hidden_layers_sizes[i-1]
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
169
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
170 # the input to this layer is either the activation of the hidden
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
171 # layer below or the input of the SdA if you are on the first
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
172 # layer
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
173 if i == 0 :
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
174 layer_input = self.x
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
175 else:
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
176 layer_input = self.layers[-1].output
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
177
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
178 layer = SigmoidalLayer(rng, layer_input, input_size,
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
179 hidden_layers_sizes[i] )
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
180 # add the layer to the
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
181 self.layers += [layer]
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
182 self.params += layer.params
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
183
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
184 # Construct a denoising autoencoder that shared weights with this
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
185 # layer
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
186 dA_layer = dA(input_size, hidden_layers_sizes[i], \
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
187 corruption_level = corruption_levels[0],\
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
188 input = layer_input, \
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
189 shared_W = layer.W, shared_b = layer.b)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
190
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
191 # Construct a function that trains this dA
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
192 # compute gradients of layer parameters
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
193 gparams = T.grad(dA_layer.cost, dA_layer.params)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
194 # compute the list of updates
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
195 updates = {}
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
196 for param, gparam in zip(dA_layer.params, gparams):
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
197 updates[param] = param - gparam * pretrain_lr
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
198
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
199 # create a function that trains the dA
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
200 update_fn = theano.function([index], dA_layer.cost, \
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
201 updates = updates,
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
202 givens = {
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
203 self.x : train_set_x[index*batch_size:(index+1)*batch_size]})
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
204 # collect this function into a list
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
205 self.pretrain_functions += [update_fn]
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
206
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
207
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
208 # We now need to add a logistic layer on top of the MLP
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
209 self.logLayer = LogisticRegression(\
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
210 input = self.layers[-1].output,\
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
211 n_in = hidden_layers_sizes[-1], n_out = n_outs)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
212
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
213 self.params += self.logLayer.params
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
214 # construct a function that implements one step of finetunining
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
215
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
216 # compute the cost, defined as the negative log likelihood
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
217 cost = self.logLayer.negative_log_likelihood(self.y)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
218 # compute the gradients with respect to the model parameters
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
219 gparams = T.grad(cost, self.params)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
220 # compute list of updates
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
221 updates = {}
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
222 for param,gparam in zip(self.params, gparams):
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
223 updates[param] = param - gparam*finetune_lr
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
224
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
225 self.finetune = theano.function([index], cost,
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
226 updates = updates,
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
227 givens = {
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
228 self.x : train_set_x[index*batch_size:(index+1)*batch_size],
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
229 self.y : train_set_y[index*batch_size:(index+1)*batch_size]} )
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
230
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
231 # symbolic variable that points to the number of errors made on the
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
232 # minibatch given by self.x and self.y
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
233
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
234 self.errors = self.logLayer.errors(self.y)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
235
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
236 if __name__ == '__main__':
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
237 import sys
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
238 args = sys.argv[1:]
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
239
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
240 if len(args) < 1:
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
241 print "Options: mnist, jobman_add, load_nist"
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
242 sys.exit(0)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
243
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
244 if args[0] == "jobman_add":
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
245 jobman_add()
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
246 elif args[0] == "mnist":
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
247 sgd_optimization_mnist(dataset=MNIST_LOCATION)
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
248 elif args[0] == "load_nist":
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
249 load_nist_test()
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
250 elif args[0] == "nist":
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
251 sgd_optimization_nist()
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
252 elif args[0] == "pc":
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
253 test_produit_croise_jobs()
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
254
5c79a2557f2f Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff changeset
255