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