annotate deep/stacked_dae/v_sylvain/nist_sda_retrieve.py @ 325:048898c1ee55

Ajout d'une fonction pour calculer l'erreur effectuee par le modele sur un ensemble pre-determine
author SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
date Fri, 09 Apr 2010 15:49:42 -0400
parents 71ffe2c9bfad
children c61b72d07676
rev   line source
287
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
1 #!/usr/bin/python
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
2 # coding: utf-8
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
3
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
4 import ift6266
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
5 import pylearn
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
6
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
7 import numpy
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
8 import theano
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
9 import time
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
10
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
11 import pylearn.version
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
12 import theano.tensor as T
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
13 from theano.tensor.shared_randomstreams import RandomStreams
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
14
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
15 import copy
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
16 import sys
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
17 import os
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
18 import os.path
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
19
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
20 from jobman import DD
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
21 import jobman, jobman.sql
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
22 from pylearn.io import filetensor
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
23
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
24 from utils import produit_cartesien_jobs
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
25 from copy import copy
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
26
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
27 from sgd_optimization import SdaSgdOptimizer
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
28
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
29 #from ift6266.utils.scalar_series import *
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
30 from ift6266.utils.seriestables import *
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
31 import tables
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
32
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
33 from ift6266 import datasets
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
34 from config2 import *
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
35
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
36 '''
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
37 Function called by jobman upon launching each job
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
38 Its path is the one given when inserting jobs: see EXPERIMENT_PATH
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
39 '''
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
40 def jobman_entrypoint(state, channel):
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
41 # record mercurial versions of each package
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
42 pylearn.version.record_versions(state,[theano,ift6266,pylearn])
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
43 # TODO: remove this, bad for number of simultaneous requests on DB
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
44 channel.save()
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
45
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
46 # For test runs, we don't want to use the whole dataset so
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
47 # reduce it to fewer elements if asked to.
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
48 rtt = None
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
49 if state.has_key('reduce_train_to'):
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
50 rtt = state['reduce_train_to']
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
51 elif REDUCE_TRAIN_TO:
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
52 rtt = REDUCE_TRAIN_TO
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
53
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
54 n_ins = 32*32
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
55 n_outs = 62 # 10 digits, 26*2 (lower, capitals)
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
56
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
57 examples_per_epoch = NIST_ALL_TRAIN_SIZE
317
067e747fd9c0 Ajout de noms differents pour les series produites pour differents choix de pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 316
diff changeset
58 #To be sure variables will not be only in the if statement
067e747fd9c0 Ajout de noms differents pour les series produites pour differents choix de pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 316
diff changeset
59 PATH = ''
067e747fd9c0 Ajout de noms differents pour les series produites pour differents choix de pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 316
diff changeset
60 nom_reptrain = ''
067e747fd9c0 Ajout de noms differents pour les series produites pour differents choix de pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 316
diff changeset
61 nom_serie = ""
067e747fd9c0 Ajout de noms differents pour les series produites pour differents choix de pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 316
diff changeset
62 if state['pretrain_choice'] == 0:
067e747fd9c0 Ajout de noms differents pour les series produites pour differents choix de pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 316
diff changeset
63 PATH=PATH_NIST
067e747fd9c0 Ajout de noms differents pour les series produites pour differents choix de pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 316
diff changeset
64 nom_pretrain='NIST'
067e747fd9c0 Ajout de noms differents pour les series produites pour differents choix de pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 316
diff changeset
65 nom_serie="series_NIST.h5"
067e747fd9c0 Ajout de noms differents pour les series produites pour differents choix de pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 316
diff changeset
66 elif state['pretrain_choice'] == 1:
067e747fd9c0 Ajout de noms differents pour les series produites pour differents choix de pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 316
diff changeset
67 PATH=PATH_P07
067e747fd9c0 Ajout de noms differents pour les series produites pour differents choix de pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 316
diff changeset
68 nom_pretrain='P07'
067e747fd9c0 Ajout de noms differents pour les series produites pour differents choix de pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 316
diff changeset
69 nom_serie="series_P07.h5"
287
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
70
317
067e747fd9c0 Ajout de noms differents pour les series produites pour differents choix de pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 316
diff changeset
71 series = create_series(state.num_hidden_layers,nom_serie)
287
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
72
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
73 print "Creating optimizer with state, ", state
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
74
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
75 optimizer = SdaSgdOptimizer(dataset=datasets.nist_all(),
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
76 hyperparameters=state, \
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
77 n_ins=n_ins, n_outs=n_outs,\
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
78 examples_per_epoch=examples_per_epoch, \
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
79 series=series,
316
60e82846a10d Correct a little bug about maximum number of minibatches
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 313
diff changeset
80 max_minibatches=rtt)
287
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
81
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
82 parameters=[]
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
83 #Number of files of P07 used for pretraining
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
84 nb_file=0
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
85 ## if state['pretrain_choice'] == 0:
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
86 ## print('\n\tpretraining with NIST\n')
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
87 ## optimizer.pretrain(datasets.nist_all())
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
88 ## elif state['pretrain_choice'] == 1:
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
89 ## #To know how many file will be used during pretraining
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
90 ## nb_file = state['pretraining_epochs_per_layer']
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
91 ## state['pretraining_epochs_per_layer'] = 1 #Only 1 time over the dataset
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
92 ## if nb_file >=100:
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
93 ## sys.exit("The code does not support this much pretraining epoch (99 max with P07).\n"+
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
94 ## "You have to correct the code (and be patient, P07 is huge !!)\n"+
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
95 ## "or reduce the number of pretraining epoch to run the code (better idea).\n")
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
96 ## print('\n\tpretraining with P07')
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
97 ## optimizer.pretrain(datasets.nist_P07(min_file=0,max_file=nb_file))
308
a76bae0f2388 Ajout d'une ligne d'impression importante
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 306
diff changeset
98
a76bae0f2388 Ajout d'une ligne d'impression importante
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 306
diff changeset
99 print ('Retrieve pre-train done earlier ( '+nom_pretrain+' )')
a76bae0f2388 Ajout d'une ligne d'impression importante
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 306
diff changeset
100
a76bae0f2388 Ajout d'une ligne d'impression importante
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 306
diff changeset
101
287
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
102
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
103 sys.stdout.flush()
306
a78dbbc61f37 Meilleure souplesse d'execution, un parametre hard-coade est maintenant plus propre
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 287
diff changeset
104 channel.save()
287
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
105
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
106 #Set some of the parameters used for the finetuning
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
107 if state.has_key('finetune_set'):
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
108 finetune_choice=state['finetune_set']
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
109 else:
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
110 finetune_choice=FINETUNE_SET
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
111
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
112 if state.has_key('max_finetuning_epochs'):
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
113 max_finetune_epoch_NIST=state['max_finetuning_epochs']
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
114 else:
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
115 max_finetune_epoch_NIST=MAX_FINETUNING_EPOCHS
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
116
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
117 if state.has_key('max_finetuning_epochs_P07'):
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
118 max_finetune_epoch_P07=state['max_finetuning_epochs_P07']
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
119 else:
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
120 max_finetune_epoch_P07=max_finetune_epoch_NIST
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
121
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
122 #Decide how the finetune is done
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
123
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
124 if finetune_choice == 0:
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
125 print('\n\n\tfinetune with NIST\n\n')
306
a78dbbc61f37 Meilleure souplesse d'execution, un parametre hard-coade est maintenant plus propre
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 287
diff changeset
126 optimizer.reload_parameters(PATH+'params_pretrain.txt')
313
e301a2f32665 Avoir exactement le meme jeu de donnees pour pre-train et finetune
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 311
diff changeset
127 optimizer.finetune(datasets.nist_all(),datasets.nist_P07(),max_finetune_epoch_NIST,ind_test=1)
287
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
128 channel.save()
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
129 if finetune_choice == 1:
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
130 print('\n\n\tfinetune with P07\n\n')
306
a78dbbc61f37 Meilleure souplesse d'execution, un parametre hard-coade est maintenant plus propre
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 287
diff changeset
131 optimizer.reload_parameters(PATH+'params_pretrain.txt')
313
e301a2f32665 Avoir exactement le meme jeu de donnees pour pre-train et finetune
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 311
diff changeset
132 optimizer.finetune(datasets.nist_P07(),datasets.nist_all(),max_finetune_epoch_P07,ind_test=0)
287
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
133 channel.save()
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
134 if finetune_choice == 2:
320
71ffe2c9bfad finetune NIST+P07 change pour P07+NIST, les experiences n'ont pas ete concluentes
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 317
diff changeset
135 print('\n\n\tfinetune with P07 followed by NIST\n\n')
306
a78dbbc61f37 Meilleure souplesse d'execution, un parametre hard-coade est maintenant plus propre
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 287
diff changeset
136 optimizer.reload_parameters(PATH+'params_pretrain.txt')
320
71ffe2c9bfad finetune NIST+P07 change pour P07+NIST, les experiences n'ont pas ete concluentes
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 317
diff changeset
137 optimizer.finetune(datasets.nist_P07(),datasets.nist_all(),max_finetune_epoch_P07,ind_test=20)
313
e301a2f32665 Avoir exactement le meme jeu de donnees pour pre-train et finetune
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 311
diff changeset
138 optimizer.finetune(datasets.nist_all(),datasets.nist_P07(),max_finetune_epoch_NIST,ind_test=21)
287
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
139 channel.save()
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
140 if finetune_choice == 3:
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
141 print('\n\n\tfinetune with NIST only on the logistic regression on top (but validation on P07).\n\
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
142 All hidden units output are input of the logistic regression\n\n')
306
a78dbbc61f37 Meilleure souplesse d'execution, un parametre hard-coade est maintenant plus propre
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 287
diff changeset
143 optimizer.reload_parameters(PATH+'params_pretrain.txt')
313
e301a2f32665 Avoir exactement le meme jeu de donnees pour pre-train et finetune
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 311
diff changeset
144 optimizer.finetune(datasets.nist_all(),datasets.nist_P07(),max_finetune_epoch_NIST,ind_test=1,special=1)
287
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
145
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
146
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
147 if finetune_choice==-1:
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
148 print('\nSERIE OF 3 DIFFERENT FINETUNINGS')
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
149 print('\n\n\tfinetune with NIST\n\n')
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
150 sys.stdout.flush()
306
a78dbbc61f37 Meilleure souplesse d'execution, un parametre hard-coade est maintenant plus propre
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 287
diff changeset
151 optimizer.reload_parameters(PATH+'params_pretrain.txt')
313
e301a2f32665 Avoir exactement le meme jeu de donnees pour pre-train et finetune
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 311
diff changeset
152 optimizer.finetune(datasets.nist_all(),datasets.nist_P07(),max_finetune_epoch_NIST,ind_test=1)
287
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
153 channel.save()
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
154 print('\n\n\tfinetune with P07\n\n')
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
155 sys.stdout.flush()
306
a78dbbc61f37 Meilleure souplesse d'execution, un parametre hard-coade est maintenant plus propre
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 287
diff changeset
156 optimizer.reload_parameters(PATH+'params_pretrain.txt')
313
e301a2f32665 Avoir exactement le meme jeu de donnees pour pre-train et finetune
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 311
diff changeset
157 optimizer.finetune(datasets.nist_P07(),datasets.nist_all(),max_finetune_epoch_P07,ind_test=0)
287
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
158 channel.save()
320
71ffe2c9bfad finetune NIST+P07 change pour P07+NIST, les experiences n'ont pas ete concluentes
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 317
diff changeset
159 print('\n\n\tfinetune with P07 (done earlier) followed by NIST (written here)\n\n')
287
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
160 sys.stdout.flush()
320
71ffe2c9bfad finetune NIST+P07 change pour P07+NIST, les experiences n'ont pas ete concluentes
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 317
diff changeset
161 optimizer.reload_parameters('params_finetune_P07.txt')
71ffe2c9bfad finetune NIST+P07 change pour P07+NIST, les experiences n'ont pas ete concluentes
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 317
diff changeset
162 optimizer.finetune(datasets.nist_all(),datasets.nist_P07(),max_finetune_epoch_NIST,ind_test=21)
287
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
163 channel.save()
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
164 print('\n\n\tfinetune with NIST only on the logistic regression on top.\n\
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
165 All hidden units output are input of the logistic regression\n\n')
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
166 sys.stdout.flush()
306
a78dbbc61f37 Meilleure souplesse d'execution, un parametre hard-coade est maintenant plus propre
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 287
diff changeset
167 optimizer.reload_parameters(PATH+'params_pretrain.txt')
313
e301a2f32665 Avoir exactement le meme jeu de donnees pour pre-train et finetune
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 311
diff changeset
168 optimizer.finetune(datasets.nist_all(),datasets.nist_P07(),max_finetune_epoch_NIST,ind_test=1,special=1)
287
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
169 channel.save()
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
170
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
171 channel.save()
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
172
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
173 return channel.COMPLETE
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
174
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
175 # These Series objects are used to save various statistics
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
176 # during the training.
317
067e747fd9c0 Ajout de noms differents pour les series produites pour differents choix de pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 316
diff changeset
177 def create_series(num_hidden_layers, nom_serie):
287
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
178
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
179 # Replace series we don't want to save with DummySeries, e.g.
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
180 # series['training_error'] = DummySeries()
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
181
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
182 series = {}
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
183
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
184 basedir = os.getcwd()
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
185
317
067e747fd9c0 Ajout de noms differents pour les series produites pour differents choix de pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 316
diff changeset
186 h5f = tables.openFile(os.path.join(basedir, nom_serie), "w")
287
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
187
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
188 # reconstruction
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
189 reconstruction_base = \
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
190 ErrorSeries(error_name="reconstruction_error",
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
191 table_name="reconstruction_error",
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
192 hdf5_file=h5f,
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
193 index_names=('epoch','minibatch'),
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
194 title="Reconstruction error (mean over "+str(REDUCE_EVERY)+" minibatches)")
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
195 series['reconstruction_error'] = \
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
196 AccumulatorSeriesWrapper(base_series=reconstruction_base,
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
197 reduce_every=REDUCE_EVERY)
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
198
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
199 # train
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
200 training_base = \
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
201 ErrorSeries(error_name="training_error",
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
202 table_name="training_error",
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
203 hdf5_file=h5f,
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
204 index_names=('epoch','minibatch'),
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
205 title="Training error (mean over "+str(REDUCE_EVERY)+" minibatches)")
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
206 series['training_error'] = \
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
207 AccumulatorSeriesWrapper(base_series=training_base,
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
208 reduce_every=REDUCE_EVERY)
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
209
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
210 # valid and test are not accumulated/mean, saved directly
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
211 series['validation_error'] = \
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
212 ErrorSeries(error_name="validation_error",
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
213 table_name="validation_error",
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
214 hdf5_file=h5f,
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
215 index_names=('epoch','minibatch'))
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
216
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
217 series['test_error'] = \
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
218 ErrorSeries(error_name="test_error",
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
219 table_name="test_error",
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
220 hdf5_file=h5f,
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
221 index_names=('epoch','minibatch'))
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
222
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
223 param_names = []
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
224 for i in range(num_hidden_layers):
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
225 param_names += ['layer%d_W'%i, 'layer%d_b'%i, 'layer%d_bprime'%i]
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
226 param_names += ['logreg_layer_W', 'logreg_layer_b']
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
227
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
228 # comment out series we don't want to save
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
229 series['params'] = SharedParamsStatisticsWrapper(
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
230 new_group_name="params",
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
231 base_group="/",
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
232 arrays_names=param_names,
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
233 hdf5_file=h5f,
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
234 index_names=('epoch',))
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
235
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
236 return series
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
237
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
238 # Perform insertion into the Postgre DB based on combination
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
239 # of hyperparameter values above
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
240 # (see comment for produit_cartesien_jobs() to know how it works)
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
241 def jobman_insert_nist():
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
242 jobs = produit_cartesien_jobs(JOB_VALS)
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
243
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
244 db = jobman.sql.db(JOBDB)
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
245 for job in jobs:
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
246 job.update({jobman.sql.EXPERIMENT: EXPERIMENT_PATH})
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
247 jobman.sql.insert_dict(job, db)
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
248
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
249 print "inserted"
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
250
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
251 if __name__ == '__main__':
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
252
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
253 args = sys.argv[1:]
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
254
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
255 #if len(args) > 0 and args[0] == 'load_nist':
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
256 # test_load_nist()
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
257
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
258 if len(args) > 0 and args[0] == 'jobman_insert':
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
259 jobman_insert_nist()
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
260
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
261 elif len(args) > 0 and args[0] == 'test_jobman_entrypoint':
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
262 chanmock = DD({'COMPLETE':0,'save':(lambda:None)})
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
263 jobman_entrypoint(DD(DEFAULT_HP_NIST), chanmock)
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
264
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
265 else:
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
266 print "Bad arguments"
f9b93ae45723 Programme pour reprendre une partie des experiences seulement. Utile seulement pour un usage tres specifique
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
267