Skip to content

Commit

Permalink
Refactor greedy numpy decoder so that it's more extensible/reusable
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnVinyard committed May 30, 2016
1 parent 75cb74e commit 1baa6cb
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
2 changes: 1 addition & 1 deletion featureflow/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,6 @@

try:
from nmpy import NumpyEncoder, PackedNumpyEncoder, StreamingNumpyDecoder, \
NumpyMetaData, NumpyFeature
BaseNumpyDecoder, NumpyMetaData, NumpyFeature
except ImportError:
pass
20 changes: 16 additions & 4 deletions featureflow/nmpy.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,22 +86,34 @@ def _np_from_buffer(b, shape, dtype):
return f(b, dtype=dtype).reshape(shape)


class GreedyNumpyDecoder(Decoder):
class BaseNumpyDecoder(Decoder):
def __init__(self):
super(GreedyNumpyDecoder, self).__init__()
super(BaseNumpyDecoder, self).__init__()

def _unpack_metadata(self, flo):
return NumpyMetaData.unpack(flo)

def _wrap_array(self, raw):
return raw

def __call__(self, flo):
metadata, bytes_read = NumpyMetaData.unpack(flo)
metadata, bytes_read = self._unpack_metadata(flo)
leftovers = flo.read()
leftover_bytes = len(leftovers)
first_dim = leftover_bytes / metadata.totalsize
dim = (first_dim,) + metadata.shape
return _np_from_buffer(leftovers, dim, metadata.dtype)
raw = _np_from_buffer(leftovers, dim, metadata.dtype)
return self._wrap_array(raw)

def __iter__(self, flo):
yield self(flo)


class GreedyNumpyDecoder(BaseNumpyDecoder):
def __init__(self):
super(GreedyNumpyDecoder, self).__init__()


class StreamingNumpyDecoder(Decoder):
def __init__(self, n_examples=100):
super(StreamingNumpyDecoder, self).__init__()
Expand Down

0 comments on commit 1baa6cb

Please sign in to comment.