annotate deep/stacked_dae/v_sylvain/nist_sda_retrieve.py @ 388:0d97fead004f

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