annotate deep/stacked_dae/v_sylvain/nist_sda.py @ 386:8875853b5bfc

Ajout d'une option finetune amelioree pour PNIST07
author SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
date Tue, 27 Apr 2010 08:41:44 -0400
parents 87e684bfe538
children 7c201ca1484f
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"
250
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
77
318
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
78 series = create_series(state.num_hidden_layers,nom_serie)
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
79
230
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
80
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
81 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
82
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
83 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
84 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
85 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
86 examples_per_epoch=examples_per_epoch, \
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
87 series=series,
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
88 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
89
250
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
90 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
91 #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
92 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
93 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
94 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
95 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
96 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
97 #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
98 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
99 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
100 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
101 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
102 "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
103 "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
104 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
105 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
106 elif state['pretrain_choice'] == 2:
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
107 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
108 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
109 if nb_file >=100:
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
110 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
111 "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
112 "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
113 print('\n\tpretraining with PNIST07')
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
114 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
115
230
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
116 channel.save()
250
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
117
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
118 #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
119 if state.has_key('finetune_set'):
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
120 finetune_choice=state['finetune_set']
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
121 else:
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
122 finetune_choice=FINETUNE_SET
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
123
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
124 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
125 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
126 else:
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
127 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
128
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
129 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
130 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
131 else:
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
132 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
133
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
134 #Decide how the finetune is done
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
135
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 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
137 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
138 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
139 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
140 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
141 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
142 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
143 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
144 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
145 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
146 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
147 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
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_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
150 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
151 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
152 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
153 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
154 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
155 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
156 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
157 if finetune_choice == 4:
386
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
158 print ('\n\n\tFinetune with PNIST07 then NIST\n\n')
382
87e684bfe538 Ajout de la faculte de prendre PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 354
diff changeset
159 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
160 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
161 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
162
250
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
163 if finetune_choice==-1:
318
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
164 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
165 print('\n\n\tfinetune with NIST\n\n')
318
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
166 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
167 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
168 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
169 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
170 print('\n\n\tfinetune with P07\n\n')
318
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
171 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
172 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
173 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
174 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
175 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
176 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
177 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
178 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
179 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
180 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
181 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
182 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
183 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
184 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
185 channel.save()
382
87e684bfe538 Ajout de la faculte de prendre PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 354
diff changeset
186 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
187 sys.stdout.flush()
87e684bfe538 Ajout de la faculte de prendre PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 354
diff changeset
188 optimizer.reload_parameters('params)pretrain.txt')
87e684bfe538 Ajout de la faculte de prendre PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 354
diff changeset
189 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
190 channel.save()
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
191 sys.stdout.flush()
8875853b5bfc Ajout d'une option finetune amelioree pour PNIST07
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 382
diff changeset
192 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
193
250
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
194
230
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
195 channel.save()
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
196
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
197 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
198
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
199 # 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
200 # during the training.
318
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
201 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
202
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
203 # 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
204 # 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
205
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
206 series = {}
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 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
209
318
8de3bef71458 Ajoute plus de fonctionnalite
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 312
diff changeset
210 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
211
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
212 # reconstruction
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
213 reconstruction_base = \
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
214 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
215 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
216 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
217 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
218 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
219 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
220 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
221 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
222
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
223 # train
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
224 training_base = \
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
225 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
226 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
227 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
228 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
229 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
230 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
231 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
232 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
233
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
234 # 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
235 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
236 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
237 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
238 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
239 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
240
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
241 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
242 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
243 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
244 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
245 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
246
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
247 param_names = []
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
248 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
249 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
250 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
251
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
252 # 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
253 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
254 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
255 base_group="/",
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
256 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
257 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
258 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
259
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
260 return series
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 # 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
263 # 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
264 # (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
265 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
266 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
267
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
268 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
269 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
270 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
271 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
272
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
273 print "inserted"
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 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
276
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
277 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
278
250
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
279 #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
280 # 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
281
250
6d49cf134a40 ajout de fonctionnalite pour different finetune dataset
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents: 238
diff changeset
282 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
283 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
284
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
285 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
286 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
287 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
288
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
289 else:
8a94a5c808cd Repertoire pour faire les tests avec les differents ensembles pour le finetuning
SylvainPL <sylvain.pannetier.lebeuf@umontreal.ca>
parents:
diff changeset
290 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
291