Mercurial > ift6266
annotate transformations/pipeline.py @ 10:faacc76d21c2
Basic new pipeline script for the images tranforms
(includes bonus patched filetensor module from pylearn.io)
author | Arnaud Bergeron <abergeron@gmail.com> |
---|---|
date | Wed, 27 Jan 2010 17:35:37 -0500 |
parents | |
children | f6b6c74bb82f |
rev | line source |
---|---|
10
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
1 from __future__ import with_statement |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
2 |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
3 import sys, os |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
4 import numpy |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
5 import filetensor as ft |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
6 import random |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
7 |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
8 BATCH_SIZE = 100 |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
9 |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
10 #import <modules> and stuff them in mods below |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
11 |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
12 mods = [] |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
13 |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
14 # DANGER: HIGH VOLTAGE -- DO NOT EDIT BELOW THIS LINE |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
15 # ----------------------------------------------------------- |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
16 |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
17 train_data = open('/data/lisa/data/nist/by_class/all/all_train_data.ft', 'rb') |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
18 |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
19 dim = tuple(ft._read_header(train_data)[3]) |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
20 |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
21 res_data = numpy.empty(dim) |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
22 |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
23 all_settings = ['complexity'] |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
24 |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
25 for mod in mods: |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
26 all_settings += mod.get_settings_names() |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
27 |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
28 params = numpy.empty(((dim[0]/BATCH_SIZE)+1, len(all_settings))) |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
29 |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
30 for i in xrange(0, dim[0], BATCH_SIZE): |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
31 train_data.seek(0) |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
32 imgs = ft.read(train_data, slice(i, i+BATCH_SIZE)) |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
33 |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
34 complexity = random.random() |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
35 p = i/BATCH_SIZE |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
36 j = 1 |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
37 for mod in mods: |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
38 par = mod.regenerate_parameters(complexity) |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
39 params[p, j:j+len(par)] = par |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
40 j += len(par) |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
41 |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
42 for k in range(imgs.shape[0]): |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
43 c = imgs[k] |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
44 for mod in mods: |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
45 c = mod.transform_image(c) |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
46 res_data[i+k] = c |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
47 |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
48 with open(sys.argv[1], 'wb') as f: |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
49 ft.write(f, res_data) |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
50 |
faacc76d21c2
Basic new pipeline script for the images tranforms
Arnaud Bergeron <abergeron@gmail.com>
parents:
diff
changeset
|
51 numpy.save(sys.argv[2], params) |