Mercurial > ift6266
annotate deep/stacked_dae/nist_sda.py @ 192:e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
author | fsavard |
---|---|
date | Wed, 03 Mar 2010 12:51:40 -0500 |
parents | 3632e6258642 |
children | 6ea5dcf0541e e1f5f66dd7dd |
rev | line source |
---|---|
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
1 #!/usr/bin/python |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
2 # coding: utf-8 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
3 |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
4 import ift6266 |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
5 import pylearn |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
6 |
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
7 import numpy |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
8 import theano |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
9 import time |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
10 |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
11 import pylearn.version |
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
12 import theano.tensor as T |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
13 from theano.tensor.shared_randomstreams import RandomStreams |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
14 |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
15 import copy |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
16 import sys |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
17 import os |
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
18 import os.path |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
19 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
20 from jobman import DD |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
21 import jobman, jobman.sql |
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
22 from pylearn.io import filetensor |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
23 |
192
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
24 from utils import produit_cartesien_jobs |
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
25 |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
26 from sgd_optimization import SdaSgdOptimizer |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
27 |
191
3632e6258642
Ajouts mineurs à stacked_dae, juste printé l'heure je crois.
fsavard
parents:
186
diff
changeset
|
28 from ift6266.utils.scalar_series import * |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
29 |
186
d364a130b221
Ajout du code de base pour scalar_series. Modifications à stacked_dae: réglé un problème avec les input_divider (empêchait une optimisation), et ajouté utilisation des séries. Si j'avais pas déjà commité, aussi, j'ai enlevé l'histoire de réutilisation du pretraining: c'était compliqué (error prone) et ça créait des jobs beaucoup trop longues.
fsavard
parents:
185
diff
changeset
|
30 TEST_CONFIG = False |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
31 |
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
32 NIST_ALL_LOCATION = '/data/lisa/data/nist/by_class/all' |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
33 |
192
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
34 JOBDB = 'postgres://ift6266h10@gershwin/ift6266h10_db/fsavard_sda4' |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
35 |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
36 REDUCE_TRAIN_TO = None |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
37 MAX_FINETUNING_EPOCHS = 1000 |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
38 REDUCE_EVERY = 1000 # number of minibatches before taking means for valid error etc. |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
39 if TEST_CONFIG: |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
40 REDUCE_TRAIN_TO = 1000 |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
41 MAX_FINETUNING_EPOCHS = 2 |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
42 REDUCE_EVERY = 10 |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
43 |
186
d364a130b221
Ajout du code de base pour scalar_series. Modifications à stacked_dae: réglé un problème avec les input_divider (empêchait une optimisation), et ajouté utilisation des séries. Si j'avais pas déjà commité, aussi, j'ai enlevé l'histoire de réutilisation du pretraining: c'était compliqué (error prone) et ça créait des jobs beaucoup trop longues.
fsavard
parents:
185
diff
changeset
|
44 EXPERIMENT_PATH = "ift6266.deep.stacked_dae.nist_sda.jobman_entrypoint" |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
45 |
192
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
46 # Possible values the hyperparameters can take. These are then |
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
47 # combined with produit_cartesien_jobs so we get a list of all |
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
48 # possible combinations, each one resulting in a job inserted |
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
49 # in the jobman DB. |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
50 JOB_VALS = {'pretraining_lr': [0.1, 0.01],#, 0.001],#, 0.0001], |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
51 'pretraining_epochs_per_layer': [10,20], |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
52 'hidden_layers_sizes': [300,800], |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
53 'corruption_levels': [0.1,0.2,0.3], |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
54 'minibatch_size': [20], |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
55 'max_finetuning_epochs':[MAX_FINETUNING_EPOCHS], |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
56 'finetuning_lr':[0.1, 0.01], #0.001 was very bad, so we leave it out |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
57 'num_hidden_layers':[2,3]} |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
58 |
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
59 # Just useful for tests... minimal number of epochs |
191
3632e6258642
Ajouts mineurs à stacked_dae, juste printé l'heure je crois.
fsavard
parents:
186
diff
changeset
|
60 DEFAULT_HP_NIST = DD({'finetuning_lr':0.1, |
3632e6258642
Ajouts mineurs à stacked_dae, juste printé l'heure je crois.
fsavard
parents:
186
diff
changeset
|
61 'pretraining_lr':0.1, |
3632e6258642
Ajouts mineurs à stacked_dae, juste printé l'heure je crois.
fsavard
parents:
186
diff
changeset
|
62 'pretraining_epochs_per_layer':20, |
3632e6258642
Ajouts mineurs à stacked_dae, juste printé l'heure je crois.
fsavard
parents:
186
diff
changeset
|
63 'max_finetuning_epochs':2, |
3632e6258642
Ajouts mineurs à stacked_dae, juste printé l'heure je crois.
fsavard
parents:
186
diff
changeset
|
64 'hidden_layers_sizes':300, |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
65 'corruption_levels':0.2, |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
66 'minibatch_size':20, |
191
3632e6258642
Ajouts mineurs à stacked_dae, juste printé l'heure je crois.
fsavard
parents:
186
diff
changeset
|
67 #'reduce_train_to':300, |
3632e6258642
Ajouts mineurs à stacked_dae, juste printé l'heure je crois.
fsavard
parents:
186
diff
changeset
|
68 'num_hidden_layers':2}) |
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
69 |
192
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
70 # Function called by jobman upon launching each job |
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
71 # Its path is the one given when inserting jobs: |
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
72 # ift6266.deep.stacked_dae.nist_sda.jobman_entrypoint |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
73 def jobman_entrypoint(state, channel): |
192
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
74 # record mercurial versions of each package |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
75 pylearn.version.record_versions(state,[theano,ift6266,pylearn]) |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
76 channel.save() |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
77 |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
78 workingdir = os.getcwd() |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
79 |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
80 print "Will load NIST" |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
81 |
192
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
82 nist = NIST(minibatch_size=20) |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
83 |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
84 print "NIST loaded" |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
85 |
192
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
86 # For test runs, we don't want to use the whole dataset so |
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
87 # reduce it to fewer elements if asked to. |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
88 rtt = None |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
89 if state.has_key('reduce_train_to'): |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
90 rtt = state['reduce_train_to'] |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
91 elif REDUCE_TRAIN_TO: |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
92 rtt = REDUCE_TRAIN_TO |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
93 |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
94 if rtt: |
192
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
95 print "Reducing training set to "+str(rtt)+ " examples" |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
96 nist.reduce_train_set(rtt) |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
97 |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
98 train,valid,test = nist.get_tvt() |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
99 dataset = (train,valid,test) |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
100 |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
101 n_ins = 32*32 |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
102 n_outs = 62 # 10 digits, 26*2 (lower, capitals) |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
103 |
192
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
104 # b,b',W for each hidden layer |
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
105 # + b,W of last layer (logreg) |
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
106 numparams = state.num_hidden_layers * 3 + 2 |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
107 series_mux = None |
191
3632e6258642
Ajouts mineurs à stacked_dae, juste printé l'heure je crois.
fsavard
parents:
186
diff
changeset
|
108 series_mux = create_series(workingdir, numparams) |
3632e6258642
Ajouts mineurs à stacked_dae, juste printé l'heure je crois.
fsavard
parents:
186
diff
changeset
|
109 |
3632e6258642
Ajouts mineurs à stacked_dae, juste printé l'heure je crois.
fsavard
parents:
186
diff
changeset
|
110 print "Creating optimizer with state, ", state |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
111 |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
112 optimizer = SdaSgdOptimizer(dataset=dataset, hyperparameters=state, \ |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
113 n_ins=n_ins, n_outs=n_outs,\ |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
114 input_divider=255.0, series_mux=series_mux) |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
115 |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
116 optimizer.pretrain() |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
117 channel.save() |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
118 |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
119 optimizer.finetune() |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
120 channel.save() |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
121 |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
122 return channel.COMPLETE |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
123 |
192
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
124 # These Series objects are used to save various statistics |
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
125 # during the training. |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
126 def create_series(basedir, numparams): |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
127 mux = SeriesMultiplexer() |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
128 |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
129 # comment out series we don't want to save |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
130 mux.add_series(AccumulatorSeries(name="reconstruction_error", |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
131 reduce_every=REDUCE_EVERY, # every 1000 batches, we take the mean and save |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
132 mean=True, |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
133 directory=basedir, flush_every=1)) |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
134 |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
135 mux.add_series(AccumulatorSeries(name="training_error", |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
136 reduce_every=REDUCE_EVERY, # every 1000 batches, we take the mean and save |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
137 mean=True, |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
138 directory=basedir, flush_every=1)) |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
139 |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
140 mux.add_series(BaseSeries(name="validation_error", directory=basedir, flush_every=1)) |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
141 mux.add_series(BaseSeries(name="test_error", directory=basedir, flush_every=1)) |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
142 |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
143 mux.add_series(ParamsArrayStats(numparams,name="params",directory=basedir)) |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
144 |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
145 return mux |
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
146 |
192
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
147 # Perform insertion into the Postgre DB based on combination |
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
148 # of hyperparameter values above |
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
149 # (see comment for produit_cartesien_jobs() to know how it works) |
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
150 def jobman_insert_nist(): |
192
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
151 jobs = produit_cartesien_jobs(JOB_VALS) |
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
152 |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
153 db = jobman.sql.db(JOBDB) |
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
154 for job in jobs: |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
155 job.update({jobman.sql.EXPERIMENT: EXPERIMENT_PATH}) |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
156 jobman.sql.insert_dict(job, db) |
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
157 |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
158 print "inserted" |
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
159 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
160 class NIST: |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
161 def __init__(self, minibatch_size, basepath=None, reduce_train_to=None): |
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
162 global NIST_ALL_LOCATION |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
163 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
164 self.minibatch_size = minibatch_size |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
165 self.basepath = basepath and basepath or NIST_ALL_LOCATION |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
166 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
167 self.set_filenames() |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
168 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
169 # arrays of 2 elements: .x, .y |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
170 self.train = [None, None] |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
171 self.test = [None, None] |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
172 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
173 self.load_train_test() |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
174 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
175 self.valid = [[], []] |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
176 self.split_train_valid() |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
177 if reduce_train_to: |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
178 self.reduce_train_set(reduce_train_to) |
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
179 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
180 def get_tvt(self): |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
181 return self.train, self.valid, self.test |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
182 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
183 def set_filenames(self): |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
184 self.train_files = ['all_train_data.ft', |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
185 'all_train_labels.ft'] |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
186 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
187 self.test_files = ['all_test_data.ft', |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
188 'all_test_labels.ft'] |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
189 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
190 def load_train_test(self): |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
191 self.load_data_labels(self.train_files, self.train) |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
192 self.load_data_labels(self.test_files, self.test) |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
193 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
194 def load_data_labels(self, filenames, pair): |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
195 for i, fn in enumerate(filenames): |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
196 f = open(os.path.join(self.basepath, fn)) |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
197 pair[i] = filetensor.read(f) |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
198 f.close() |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
199 |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
200 def reduce_train_set(self, max): |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
201 self.train[0] = self.train[0][:max] |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
202 self.train[1] = self.train[1][:max] |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
203 |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
204 if max < len(self.test[0]): |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
205 for ar in (self.test, self.valid): |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
206 ar[0] = ar[0][:max] |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
207 ar[1] = ar[1][:max] |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
208 |
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
209 def split_train_valid(self): |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
210 test_len = len(self.test[0]) |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
211 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
212 new_train_x = self.train[0][:-test_len] |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
213 new_train_y = self.train[1][:-test_len] |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
214 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
215 self.valid[0] = self.train[0][-test_len:] |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
216 self.valid[1] = self.train[1][-test_len:] |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
217 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
218 self.train[0] = new_train_x |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
219 self.train[1] = new_train_y |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
220 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
221 def test_load_nist(): |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
222 print "Will load NIST" |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
223 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
224 import time |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
225 t1 = time.time() |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
226 nist = NIST(20) |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
227 t2 = time.time() |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
228 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
229 print "NIST loaded. time delta = ", t2-t1 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
230 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
231 tr,v,te = nist.get_tvt() |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
232 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
233 print "Lenghts: ", len(tr[0]), len(v[0]), len(te[0]) |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
234 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
235 raw_input("Press any key") |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
236 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
237 if __name__ == '__main__': |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
238 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
239 import sys |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
240 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
241 args = sys.argv[1:] |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
242 |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
243 if len(args) > 0 and args[0] == 'load_nist': |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
244 test_load_nist() |
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
245 |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
246 elif len(args) > 0 and args[0] == 'jobman_insert': |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
247 jobman_insert_nist() |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
248 |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
249 elif len(args) > 0 and args[0] == 'test_jobman_entrypoint': |
191
3632e6258642
Ajouts mineurs à stacked_dae, juste printé l'heure je crois.
fsavard
parents:
186
diff
changeset
|
250 def f(): |
3632e6258642
Ajouts mineurs à stacked_dae, juste printé l'heure je crois.
fsavard
parents:
186
diff
changeset
|
251 pass |
3632e6258642
Ajouts mineurs à stacked_dae, juste printé l'heure je crois.
fsavard
parents:
186
diff
changeset
|
252 chanmock = DD({'COMPLETE':0,'save':f}) |
185
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
253 jobman_entrypoint(DEFAULT_HP_NIST, chanmock) |
b9ea8e2d071a
Enlevé ce qui concernait la réutilisation de résultats de préentraînement (trop compliqué pour peu de bénéfice: c'est le finetuning qui est vraiment long
fsavard
parents:
167
diff
changeset
|
254 |
139
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
255 elif len(args) > 0 and args[0] == 'estimate': |
7d8366fb90bf
Ajouté des __init__.py dans l'arborescence pour que les scripts puissent être utilisés avec des paths pour jobman, et fait pas mal de modifs dans stacked_dae pour pouvoir réutiliser le travail fait pour des tests où le pretraining est le même.
fsavard
parents:
131
diff
changeset
|
256 estimate_total_time() |
131
5c79a2557f2f
Un peu de ménage dans code pour stacked DAE, splitté en fichiers dans un nouveau sous-répertoire.
savardf
parents:
diff
changeset
|
257 else: |
192
e656edaedb48
Commented a few things, renamed the produit_croise_jobs function, replaced the cost function (NOT TESTED YET).
fsavard
parents:
191
diff
changeset
|
258 print "Bad arguments" |