Generate fake data of given shapes
| 12 | |
| 13 | |
| 14 | class FakeData(RNGDataFlow): |
| 15 | """ Generate fake data of given shapes""" |
| 16 | |
| 17 | def __init__(self, shapes, size=1000, random=True, dtype='float32', domain=(0, 1)): |
| 18 | """ |
| 19 | Args: |
| 20 | shapes (list): a list of lists/tuples. Shapes of each component. |
| 21 | size (int): size of this DataFlow. |
| 22 | random (bool): whether to randomly generate data every iteration. |
| 23 | Note that merely generating the data could sometimes be time-consuming! |
| 24 | dtype (str or list): data type as string, or a list of data types. |
| 25 | domain (tuple or list): (min, max) tuple, or a list of such tuples |
| 26 | """ |
| 27 | super(FakeData, self).__init__() |
| 28 | self.shapes = shapes |
| 29 | self._size = int(size) |
| 30 | self.random = random |
| 31 | self.dtype = [dtype] * len(shapes) if isinstance(dtype, six.string_types) else dtype |
| 32 | self.domain = [domain] * len(shapes) if isinstance(domain, tuple) else domain |
| 33 | assert len(self.dtype) == len(self.shapes) |
| 34 | assert len(self.domain) == len(self.domain) |
| 35 | |
| 36 | def __len__(self): |
| 37 | return self._size |
| 38 | |
| 39 | def __iter__(self): |
| 40 | if self.random: |
| 41 | for _ in range(self._size): |
| 42 | val = [] |
| 43 | for k in range(len(self.shapes)): |
| 44 | v = self.rng.rand(*self.shapes[k]) * (self.domain[k][1] - self.domain[k][0]) + self.domain[k][0] |
| 45 | val.append(v.astype(self.dtype[k])) |
| 46 | yield val |
| 47 | else: |
| 48 | val = [] |
| 49 | for k in range(len(self.shapes)): |
| 50 | v = self.rng.rand(*self.shapes[k]) * (self.domain[k][1] - self.domain[k][0]) + self.domain[k][0] |
| 51 | val.append(v.astype(self.dtype[k])) |
| 52 | for _ in range(self._size): |
| 53 | yield copy.copy(val) |
| 54 | |
| 55 | |
| 56 | class DataFromQueue(DataFlow): |
no outgoing calls
no test coverage detected