| 111 | |
| 112 | |
| 113 | class TestIterator: |
| 114 | def __init__(self, n, batch_size, dims=[2], as_tensor=False): |
| 115 | self.batch_size = batch_size |
| 116 | self.dims = dims |
| 117 | self.n = n |
| 118 | self.as_tensor = as_tensor |
| 119 | self.i = 0 |
| 120 | |
| 121 | def __len__(self): |
| 122 | return self.n |
| 123 | |
| 124 | def __iter__(self): |
| 125 | # return a copy, so that the iteration number doesn't collide |
| 126 | return TestIterator(self.n, self.batch_size, self.dims, self.as_tensor) |
| 127 | |
| 128 | def __next__(self): |
| 129 | random_seed(12345 * self.i + 4321) |
| 130 | |
| 131 | def generate(dim): |
| 132 | if self.as_tensor: |
| 133 | shape = random_int(1, 10, [dim]).tolist() |
| 134 | return random_array([self.batch_size] + shape) |
| 135 | else: |
| 136 | return [ |
| 137 | random_array(random_int(1, 10, [dim]).tolist()) for _ in range(self.batch_size) |
| 138 | ] |
| 139 | |
| 140 | if self.i < self.n: |
| 141 | self.i += 1 |
| 142 | if isinstance(self.dims, (list, tuple)): |
| 143 | return [generate(d) for d in self.dims] |
| 144 | else: |
| 145 | return generate(self.dims) |
| 146 | else: |
| 147 | self.i = 0 |
| 148 | raise StopIteration |
| 149 | |
| 150 | next = __next__ |
| 151 | |
| 152 | |
| 153 | class SampleIterator: |
no outgoing calls