|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"""Various utilities.""" |
|
|
|
from __future__ import absolute_import |
|
from __future__ import division |
|
from __future__ import print_function |
|
|
|
import cPickle |
|
import sys |
|
import tensorflow as tf |
|
|
|
|
|
class Memoize(object): |
|
def __init__(self, f): |
|
self.f = f |
|
self.cache = {} |
|
|
|
def __call__(self, *args): |
|
if args not in self.cache: |
|
self.cache[args] = self.f(*args) |
|
return self.cache[args] |
|
|
|
|
|
def load_cpickle(path, memoized=True): |
|
return _load_cpickle_memoize(path) if memoized else _load_cpickle(path) |
|
|
|
|
|
def _load_cpickle(path): |
|
with tf.gfile.GFile(path, 'r') as f: |
|
return cPickle.load(f) |
|
|
|
|
|
@Memoize |
|
def _load_cpickle_memoize(path): |
|
return _load_cpickle(path) |
|
|
|
|
|
def write_cpickle(o, path): |
|
tf.gfile.MakeDirs(path.rsplit('/', 1)[0]) |
|
with tf.gfile.GFile(path, 'w') as f: |
|
cPickle.dump(o, f, -1) |
|
|
|
|
|
def log(*args): |
|
msg = ' '.join(map(str, args)) |
|
sys.stdout.write(msg + '\n') |
|
sys.stdout.flush() |
|
|
|
|
|
def heading(*args): |
|
log() |
|
log(80 * '=') |
|
log(*args) |
|
log(80 * '=') |
|
|