annotate deep/stacked_dae/v_sylvain/train_error.py @ 327:4306796d60a8

Rajout de la capacite de faire decroitre le taux d'apprentissage si demande
author SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
date Sun, 11 Apr 2010 19:52:28 -0400
parents b762ac18a2d7
children 442fc117e886
rev   line source
326
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
1 #!/usr/bin/python
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
2 # coding: utf-8
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
3
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
4 import ift6266
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
5 import pylearn
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
6
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
7 import numpy
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
8 import theano
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
9 import time
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
10
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
11 import pylearn.version
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
12 import theano.tensor as T
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
13 from theano.tensor.shared_randomstreams import RandomStreams
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
14
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
15 import copy
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
16 import sys
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
17 import os
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
18 import os.path
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
19
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
20 from jobman import DD
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
21 import jobman, jobman.sql
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
22 from pylearn.io import filetensor
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
23
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
24 from utils import produit_cartesien_jobs
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
25 from copy import copy
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
26
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
27 from sgd_optimization import SdaSgdOptimizer
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
28
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
29 #from ift6266.utils.scalar_series import *
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
30 from ift6266.utils.seriestables import *
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
31 import tables
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
32
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
33 from ift6266 import datasets
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
34 from config import *
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
35
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
36 '''
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
37 Function called by jobman upon launching each job
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
38 Its path is the one given when inserting jobs: see EXPERIMENT_PATH
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
39 '''
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
40 def jobman_entrypoint(state, channel):
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
41 # record mercurial versions of each package
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
42 pylearn.version.record_versions(state,[theano,ift6266,pylearn])
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
43 # TODO: remove this, bad for number of simultaneous requests on DB
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
44 channel.save()
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
45
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
46 # For test runs, we don't want to use the whole dataset so
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
47 # reduce it to fewer elements if asked to.
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
48 rtt = None
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
49 if state.has_key('reduce_train_to'):
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
50 rtt = state['reduce_train_to']
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
51 elif REDUCE_TRAIN_TO:
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
52 rtt = REDUCE_TRAIN_TO
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
53
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
54 n_ins = 32*32
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
55 n_outs = 62 # 10 digits, 26*2 (lower, capitals)
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
56
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
57 examples_per_epoch = NIST_ALL_TRAIN_SIZE
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
58
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
59 PATH = ''
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
60 maximum_exemples=int(500000) #Maximum number of exemples seen
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
61
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
62
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
63
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
64 print "Creating optimizer with state, ", state
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
65
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
66 optimizer = SdaSgdOptimizer(dataset=datasets.nist_all(),
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
67 hyperparameters=state, \
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
68 n_ins=n_ins, n_outs=n_outs,\
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
69 examples_per_epoch=examples_per_epoch, \
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
70 max_minibatches=rtt)
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
71
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
72
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
73
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
74
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
75
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
76 if os.path.exists(PATH+'params_finetune_NIST.txt'):
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
77 print ('\n finetune = NIST ')
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
78 optimizer.reload_parameters(PATH+'params_finetune_NIST.txt')
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
79 print "For" + str(maximum_exemples) + "over the NIST training set: "
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
80 optimizer.training_error(datasets.nist_all(maxsize=maximum_exemples))
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
81
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
82
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
83 if os.path.exists(PATH+'params_finetune_P07.txt'):
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
84 print ('\n finetune = P07 ')
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
85 optimizer.reload_parameters(PATH+'params_finetune_P07.txt')
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
86 print "For" + str(maximum_exemples) + "over the P07 training set: "
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
87 optimizer.training_error(datasets.nist_P07(maxsize=maximum_exemples))
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
88
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
89
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
90 if os.path.exists(PATH+'params_finetune_NIST_then_P07.txt'):
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
91 print ('\n finetune = NIST then P07')
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
92 optimizer.reload_parameters(PATH+'params_finetune_NIST_then_P07.txt')
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
93 print "For" + str(maximum_exemples) + "over the NIST training set: "
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
94 optimizer.training_error(datasets.nist_all(maxsize=maximum_exemples))
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
95 print "For" + str(maximum_exemples) + "over the P07 training set: "
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
96 optimizer.training_error(datasets.nist_P07(maxsize=maximum_exemples))
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
97
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
98 if os.path.exists(PATH+'params_finetune_P07_then_NIST.txt'):
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
99 print ('\n finetune = P07 then NIST')
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
100 optimizer.reload_parameters(PATH+'params_finetune_P07_then_NIST.txt')
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
101 print "For" + str(maximum_exemples) + "over the P07 training set: "
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
102 optimizer.training_error(datasets.nist_P07(maxsize=maximum_exemples))
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
103 print "For" + str(maximum_exemples) + "over the NIST training set: "
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
104 optimizer.training_error(datasets.nist_all(maxsize=maximum_exemples))
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
105
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
106 channel.save()
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
107
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
108 return channel.COMPLETE
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
109
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
110
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
111
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
112 if __name__ == '__main__':
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
113
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
114
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
115 chanmock = DD({'COMPLETE':0,'save':(lambda:None)})
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
116 jobman_entrypoint(DD(DEFAULT_HP_NIST), chanmock)
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
117
b762ac18a2d7 Calcule l'erreur d'entrainement
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
118