| 137 | |
| 138 | class EmbeddingCache: |
| 139 | def __init__(self, base_path, seed=-1): |
| 140 | self.base_path = base_path |
| 141 | with open(base_path + '_meta', 'r') as f: |
| 142 | meta = json.load(f) |
| 143 | self.dtype = np.dtype(meta['type']) |
| 144 | self.total_number = meta['total_number'] |
| 145 | self.record_size = int( |
| 146 | meta['embedding_size']) * self.dtype.itemsize + 4 |
| 147 | if seed >= 0: |
| 148 | self.ix_array = np.random.RandomState(seed).permutation( |
| 149 | self.total_number) |
| 150 | else: |
| 151 | self.ix_array = np.arange(self.total_number) |
| 152 | self.f = None |
| 153 | |
| 154 | def open(self): |
| 155 | self.f = open(self.base_path, 'rb') |