Mercurial > pylearn
annotate doc/v2_planning/plugin_RP.py @ 1153:ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
author | Razvan Pascanu <r.pascanu@gmail.com> |
---|---|
date | Thu, 16 Sep 2010 17:34:30 -0400 |
parents | |
children | f923dddf0bf7 |
rev | line source |
---|---|
1153
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
1 ''' |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
2 ================================================= |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
3 Plugin system for interative algortithm Version B |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
4 ================================================= |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
5 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
6 After the meeting (September 16) we sort of stumbled on |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
7 two possible versions of the plug-in system. This represents |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
8 the second version. It suffered a few changes after seeing |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
9 Olivier's code and talking to him. |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
10 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
11 Concept |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
12 ======= |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
13 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
14 The basic idea behind this version is not to have a list of all |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
15 possible events, but rather have plugin register to events.By |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
16 specifying what plugin listens to which event produced by what |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
17 plugin you define a sort of dependency graph. Structuring things |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
18 in such a graph might make the script more intuitive when reading. |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
19 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
20 I will first go through pseudo-code for two example and then enumerate |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
21 my insights and concepts on the matter |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
22 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
23 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
24 Example : Producer - Consumer that Guillaume described |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
25 ====================================================== |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
26 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
27 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
28 .. code-block:: |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
29 ''' |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
30 sch = Schedular() |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
31 p = ProducerFactory() |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
32 p = sched.schedule_plugin(event = every(p.outputStuffs()), p ) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
33 p = sched.schedule_plugin(event = Event("begin"), p) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
34 c = sched.schedule_plugin(event = every(p.outputStuffs()), ConsumerFactory ) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
35 pc= sched.schedule_plugin(event = every(p.outputStuffs()), ProducerConsumerFactory ) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
36 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
37 sched.run() |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
38 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
39 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
40 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
41 ''' |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
42 Example : Logistic regression |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
43 ============================= |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
44 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
45 Task description |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
46 ---------------- |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
47 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
48 Apply a logistic regression network to some dataset. Use early stopping. |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
49 Save the weights everytime a new best score is obtained. Print trainnig score |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
50 after each epoch. |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
51 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
52 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
53 Possible script |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
54 --------------- |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
55 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
56 Sorry for long variable names, I wanted to make it clear what things are .. |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
57 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
58 .. code-block:: |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
59 ''' |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
60 sched = Schedular() |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
61 # This is a shortcut .. I've been to the dataset committee and they have |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
62 # something else in mind, a bit more fancy; I totally agree with their |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
63 # ideas I just wrote it like this for brevity; |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
64 train_data, valid_data, test_data = load_mnist() |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
65 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
66 # This part was not actually discussed into details ; I have my own |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
67 # opinions of how this part should be done .. but for now I decomposed it |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
68 # in two functions for convinience |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
69 logreg = generate_logreg_model() |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
70 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
71 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
72 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
73 # Note that this is not meant to replace the string idea of Olivier. I |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
74 # actually think that is a cool idea, when writing things down I realized |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
75 # it might be a bit more intuitive if you would get that object by calling |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
76 # a method of the instance of the plugin with a significant name |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
77 # I added a warpping function that sort of tells on which such events |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
78 # you can have similar to what Olivier wrote { every, at .. } |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
79 doOneTrainingStepPlugin =ModelPluginFactory( model = logreg ) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
80 trainDataPlugin = sched.schedule_plugin( |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
81 event = every(doOneTrainingStepPlugin.new_train_error), |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
82 DatasetsPluginFactory( data = train_data) ) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
83 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
84 trainDataPlugin = sched.schedule_plugin( |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
85 event = Event('begin'), trainDataPlugin ) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
86 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
87 clock = sched.schedule_plugin( event = all_events, ClockFactory()) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
88 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
89 doOneTrainingStepPlugin = sched.schedule_plugin( |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
90 event = every(trainDataPlugin.new_batch()), |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
91 ModelFactory( model = logreg)) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
92 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
93 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
94 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
95 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
96 # Arguably we wouldn't need such a plugin. I added just to show how to |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
97 # deal with multiple events from same plugin; the plugin is suppose to |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
98 # reset the index of the dataset to 0, so that you start a new epoch |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
99 resetDataset = sched.schedule_plugin( |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
100 event = every(trainDataPlugin.end_of_dataset()), |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
101 ResetDatasetFactory( data = train_data) ) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
102 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
103 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
104 checkValidationPlugin = sched.schedule_plugin( |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
105 event =every_nth(doOneTrainingStepPlugin.done(), n=1000), |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
106 ValidationFactory( model = logreg data = valid_data)) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
107 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
108 # You have the options to also do : |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
109 # |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
110 # checkValidationPlugin = sched.schedule_plugin( |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
111 # event =every(trainDataPlugin.end_of_dataset()), |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
112 # ValidationFactory( model = logreg, data = valid_data)) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
113 # checkValidationPlugin = sched.schedule_plugin( |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
114 # event =every(clock.hour()), |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
115 # ValidationFactory( model = logreg, data = valid_data)) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
116 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
117 # This plugin would be responsible to send the Event("terminate") when the |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
118 # patience expired. |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
119 earlyStopperPlugin = sched.schedule_plugin( |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
120 event = every(checkValidationPlugin.new_validation_error()), |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
121 earlyStopperFactory(initial_patience = 10) ) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
122 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
123 # Printing & Saving plugins |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
124 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
125 printTrainingError = sched.schedule_plugin( |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
126 event = every(doOneTrainingStepPlugin.new_train_error()), |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
127 AggregateAndPrintFactory()) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
128 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
129 printTrainingError = sched.schedule_plugin( |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
130 event = every(trainDataPlugin.end_of_dataset()), |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
131 printTrainingError) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
132 saveWeightsPlugin = sched.schedule_plugin( |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
133 event = every(earlyStopperPlugin.new_best_valid_error()), |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
134 saveWeightsFactory( model = logreg) ) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
135 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
136 sched.run() |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
137 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
138 ''' |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
139 Notes |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
140 ===== |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
141 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
142 In my code schedule_plugin returns the plugin that it regsiters. I think that |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
143 writing something like |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
144 x = f( .. ) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
145 y = f(x) |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
146 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
147 makes more readable then writing f( .., event_belongs_to = x), or even worse, |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
148 you only see text, and you would have to go to the plugins to see what events |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
149 they actually produce. |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
150 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
151 At this point I am more concern with how the scripts will look ( the cognitive |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
152 load to understand them) and how easy is to go to hack into them. From this point |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
153 of view I would have the following suggestions : |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
154 * dataset and model creation should create outside the schedular with possibly |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
155 other mechanisms |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
156 * there are two types of plugins, those that do not affect the experiment, |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
157 they just compute statistics and print them, or save different data and those |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
158 plugin that change the state of the model, like train, or influence the life |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
159 of the experiment. There should be a minimum of plugins of the second category, |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
160 to still have the code readable. ( When understanding a script, you only need |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
161 to understand that part, the rest you assume is just printing stuff). |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
162 The different categories should also be grouped. |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
163 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
164 |
ae5ba6206fd3
a first draft of pseudo-code for logreg .. using version B (?) approach
Razvan Pascanu <r.pascanu@gmail.com>
parents:
diff
changeset
|
165 ''' |