| 14 | |
| 15 | |
| 16 | class DBFileReader(Reader): |
| 17 | |
| 18 | default_name_suffix = 'db_file_reader' |
| 19 | |
| 20 | """Reader reads from a DB file. |
| 21 | |
| 22 | Example usage: |
| 23 | db_file_reader = DBFileReader(db_path='/tmp/cache.db', db_type='LevelDB') |
| 24 | |
| 25 | Args: |
| 26 | db_path: str. |
| 27 | db_type: str. DB type of file. A db_type is registed by |
| 28 | `REGISTER_CAFFE2_DB(<db_type>, <DB Class>)`. |
| 29 | name: str or None. Name of DBFileReader. |
| 30 | Optional name to prepend to blobs that will store the data. |
| 31 | Default to '<db_name>_<default_name_suffix>'. |
| 32 | batch_size: int. |
| 33 | How many examples are read for each time the read_net is run. |
| 34 | loop_over: bool. |
| 35 | If True given, will go through examples in random order endlessly. |
| 36 | field_names: List[str]. If the schema.field_names() should not in |
| 37 | alphabetic order, it must be specified. |
| 38 | Otherwise, schema will be automatically restored with |
| 39 | schema.field_names() sorted in alphabetic order. |
| 40 | """ |
| 41 | def __init__( |
| 42 | self, |
| 43 | db_path, |
| 44 | db_type, |
| 45 | name=None, |
| 46 | batch_size=100, |
| 47 | loop_over=False, |
| 48 | field_names=None, |
| 49 | ): |
| 50 | assert db_path is not None, "db_path can't be None." |
| 51 | assert db_type in C.registered_dbs(), \ |
| 52 | "db_type [{db_type}] is not available. \n" \ |
| 53 | "Choose one of these: {registered_dbs}.".format( |
| 54 | db_type=db_type, |
| 55 | registered_dbs=C.registered_dbs(), |
| 56 | ) |
| 57 | |
| 58 | self.db_path = os.path.expanduser(db_path) |
| 59 | self.db_type = db_type |
| 60 | self.name = name or '{db_name}_{default_name_suffix}'.format( |
| 61 | db_name=self._extract_db_name_from_db_path(), |
| 62 | default_name_suffix=self.default_name_suffix, |
| 63 | ) |
| 64 | self.batch_size = batch_size |
| 65 | self.loop_over = loop_over |
| 66 | |
| 67 | # Before self._init_reader_schema(...), |
| 68 | # self.db_path and self.db_type are required to be set. |
| 69 | super().__init__(self._init_reader_schema(field_names)) |
| 70 | self.ds = Dataset(self._schema, self.name + '_dataset') |
| 71 | self.ds_reader = None |
| 72 | |
| 73 | def _init_name(self, name): |
no outgoing calls
searching dependent graphs…