Mercurial > pylearn
annotate pylearn/dataset_ops/memo.py @ 998:8ba8b08e0442
added the image_patches dataset used in RanzatoHinton2010
modified mcRBM to use it.
author | James Bergstra <bergstrj@iro.umontreal.ca> |
---|---|
date | Tue, 24 Aug 2010 16:51:53 -0400 |
parents | 5c7374bd127c |
children | c9ec065ff736 |
rev | line source |
---|---|
832 | 1 """Provide a decorator that caches expensive functions |
2 """ | |
3 import logging | |
4 _logger = logging.getLogger(__file__) | |
5 info = _logger.info | |
6 def infop(*args): | |
7 info(' '.join(str(a) for a in args)) | |
8 | |
9 def memo(f): | |
10 #TODO: support kwargs to rval. This requires looking up the names of f's parameters to | |
11 # construct a proper key. | |
12 | |
13 #TODO: use weak references instead of a normal dict so that the cache doesn't prevent | |
14 # garbage collection | |
15 cache = {} | |
16 def rval(*args): | |
17 if args not in cache: | |
18 cache[args] = f(*args) | |
19 return cache[args] | |
840
7ccce98da2b6
added forget function to memo in dataset_ops.memo
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
832
diff
changeset
|
20 def forget(): |
7ccce98da2b6
added forget function to memo in dataset_ops.memo
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
832
diff
changeset
|
21 for k in cache.keys(): |
7ccce98da2b6
added forget function to memo in dataset_ops.memo
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
832
diff
changeset
|
22 del cache[k] |
866
9b13f7bb00ef
added cache member to memo-ized functions
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
840
diff
changeset
|
23 rval.cache = cache |
840
7ccce98da2b6
added forget function to memo in dataset_ops.memo
James Bergstra <bergstrj@iro.umontreal.ca>
parents:
832
diff
changeset
|
24 rval.forget = forget |
832 | 25 rval.__name__ = 'memo@%s'%f.__name__ |
858
f11881a265ee
export 'cache' variable
Pascal Lamblin <lamblinp@iro.umontreal.ca>
parents:
840
diff
changeset
|
26 rval.cache = cache |
832 | 27 return rval |
28 |