annotate deep/stacked_dae/v_sylvain/nist_sda.py @ 631:510220effb14

corrections demandees par reviewer
author Yoshua Bengio <bengioy@iro.umontreal.ca>
date Sat, 19 Mar 2011 22:44:53 -0400
parents c91d7b67fa41
children
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
354
ffc06af1c543 Ajout d'une fonctionnalite pour pouvoir avoir un taux d'apprentissage decroissant dans le pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 327
diff changeset
58
ffc06af1c543 Ajout d'une fonctionnalite pour pouvoir avoir un taux d'apprentissage decroissant dans le pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 327
diff changeset
59 if state.has_key('decrease_lr_pretrain'):
ffc06af1c543 Ajout d'une fonctionnalite pour pouvoir avoir un taux d'apprentissage decroissant dans le pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 327
diff changeset
60 dec=state['decrease_lr_pretrain']
ffc06af1c543 Ajout d'une fonctionnalite pour pouvoir avoir un taux d'apprentissage decroissant dans le pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 327
diff changeset
61 else :
ffc06af1c543 Ajout d'une fonctionnalite pour pouvoir avoir un taux d'apprentissage decroissant dans le pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 327
diff changeset
62 dec=0
250
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
63
230
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
64 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
65 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
66
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
67 examples_per_epoch = NIST_ALL_TRAIN_SIZE
318
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
68
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
69 #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
70 PATH = ''
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
71 nom_reptrain = ''
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
72 nom_serie = ""
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
73 if state['pretrain_choice'] == 0:
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
74 nom_serie="series_NIST.h5"
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
75 elif state['pretrain_choice'] == 1:
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
76 nom_serie="series_P07.h5"
390
7c201ca1484f Correction d'un bug mineurpour le nom de la serie h5
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 386
diff changeset
77 elif state['pretrain_choice'] == 2:
7c201ca1484f Correction d'un bug mineurpour le nom de la serie h5
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 386
diff changeset
78 nom_serie="series_PNIST.h5"
250
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
79
318
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
80 series = create_series(state.num_hidden_layers,nom_serie)
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
81
230
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
82
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
83 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
84
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
85 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
86 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
87 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
88 examples_per_epoch=examples_per_epoch, \
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
89 series=series,
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
90 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
91
250
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
92 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
93 #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
94 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
95 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
96 print('\n\tpretraining with NIST\n')
354
ffc06af1c543 Ajout d'une fonctionnalite pour pouvoir avoir un taux d'apprentissage decroissant dans le pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 327
diff changeset
97 optimizer.pretrain(datasets.nist_all(), decrease = dec)
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
98 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
99 #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
100 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
101 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
102 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
103 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
104 "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
105 "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
106 print('\n\tpretraining with P07')
354
ffc06af1c543 Ajout d'une fonctionnalite pour pouvoir avoir un taux d'apprentissage decroissant dans le pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 327
diff changeset
107 optimizer.pretrain(datasets.nist_P07(min_file=0,max_file=nb_file),decrease = dec)
386
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
108 elif state['pretrain_choice'] == 2:
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
109 nb_file = int(state['pretraining_epochs_per_layer'])
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
110 state['pretraining_epochs_per_layer'] = 1 #Only 1 time over the dataset
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
111 if nb_file >=100:
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
112 sys.exit("The code does not support this much pretraining epoch (99 max with P07).\n"+
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
113 "You have to correct the code (and be patient, P07 is huge !!)\n"+
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
114 "or reduce the number of pretraining epoch to run the code (better idea).\n")
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
115 print('\n\tpretraining with PNIST07')
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
116 optimizer.pretrain(datasets.PNIST07(min_file=0,max_file=nb_file),decrease = dec)
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
117
230
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
118 channel.save()
250
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
119
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
120 #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
121 if state.has_key('finetune_set'):
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
122 finetune_choice=state['finetune_set']
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
123 else:
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
124 finetune_choice=FINETUNE_SET
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
125
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
126 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
127 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
128 else:
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
129 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
130
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
131 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
132 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
133 else:
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
134 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
135
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
136 #Decide how the finetune is done
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
137
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
138 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
139 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
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,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 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
143 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
144 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
145 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
146 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
147 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
148 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
149 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
150 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
151 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
152 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
153 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
154 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
155 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
156 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
157 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
158 optimizer.finetune(datasets.nist_all(),datasets.nist_P07(),max_finetune_epoch_NIST,ind_test=1,special=1,decrease=decrease_lr)
382
87e684bfe538 Ajout de la faculte de prendre PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 354
diff changeset
159 if finetune_choice == 4:
386
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
160 print ('\n\n\tFinetune with PNIST07 then NIST\n\n')
419
c91d7b67fa41 Correction d'une petite erreur dans le nom des fichiers de parametres de pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 390
diff changeset
161 optimizer.reload_parameters('params_pretrain.txt')
386
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
162 optimizer.finetune(datasets.PNIST07(),datasets.nist_all(),max_finetune_epoch_NIST,ind_test=30,decrease=decrease_lr,dataset_test2=datasets.nist_P07())
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
163 optimizer.finetune(datasets.nist_all(),datasets.PNIST07(),max_finetune_epoch_NIST,ind_test=31,decrease=decrease_lr,dataset_test2=datasets.nist_P07())
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
250
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
165 if finetune_choice==-1:
318
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
166 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
167 print('\n\n\tfinetune with NIST\n\n')
318
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
168 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
169 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
170 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
171 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
172 print('\n\n\tfinetune with P07\n\n')
318
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
173 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
174 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
175 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
176 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
177 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
178 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
179 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
180 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
181 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
182 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
183 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
184 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
185 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
186 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
187 channel.save()
382
87e684bfe538 Ajout de la faculte de prendre PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 354
diff changeset
188 print ('\n\n\tFinetune with PNIST07\n\n')
87e684bfe538 Ajout de la faculte de prendre PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 354
diff changeset
189 sys.stdout.flush()
419
c91d7b67fa41 Correction d'une petite erreur dans le nom des fichiers de parametres de pretrain
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 390
diff changeset
190 optimizer.reload_parameters('params_pretrain.txt')
382
87e684bfe538 Ajout de la faculte de prendre PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 354
diff changeset
191 optimizer.finetune(datasets.PNIST07(),datasets.nist_all(),max_finetune_epoch_NIST,ind_test=2,decrease=decrease_lr,dataset_test2=datasets.nist_P07())
386
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
192 channel.save()
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
193 sys.stdout.flush()
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
194 optimizer.finetune(datasets.nist_all(),datasets.PNIST07(),max_finetune_epoch_NIST,ind_test=31,decrease=decrease_lr,dataset_test2=datasets.nist_P07())
382
87e684bfe538 Ajout de la faculte de prendre PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 354
diff changeset
195
250
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
196
230
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
197 channel.save()
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
198
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
199 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
200
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
201 # 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
202 # during the training.
318
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
203 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
204
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
205 # 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
206 # 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
207
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
208 series = {}
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
209
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
210 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
211
318
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
212 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
213
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
214 # reconstruction
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
215 reconstruction_base = \
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
216 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
217 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
218 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
219 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
220 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
221 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
222 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
223 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
224
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
225 # train
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
226 training_base = \
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
227 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
228 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
229 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
230 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
231 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
232 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
233 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
234 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
235
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
236 # 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
237 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
238 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
239 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
240 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
241 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
242
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
243 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
244 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
245 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
246 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
247 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
248
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
249 param_names = []
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
250 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
251 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
252 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
253
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
254 # 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
255 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
256 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
257 base_group="/",
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
258 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
259 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
260 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
261
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
262 return series
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
263
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
264 # 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
265 # 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
266 # (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
267 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
268 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
269
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
270 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
271 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
272 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
273 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
274
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
275 print "inserted"
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
276
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
277 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
278
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
279 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
280
250
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
281 #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
282 # 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
283
250
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
284 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
285 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
286
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
287 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
288 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
289 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
290
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
291 else:
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
292 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
293