Spaces:
Runtime error
Runtime error
| from .builder import RUNNER_BUILDERS, RUNNERS | |
| class DefaultRunnerConstructor: | |
| """Default constructor for runners. | |
| Custom existing `Runner` like `EpocBasedRunner` though `RunnerConstructor`. | |
| For example, We can inject some new properties and functions for `Runner`. | |
| Example: | |
| >>> from annotator.uniformer.mmcv.runner import RUNNER_BUILDERS, build_runner | |
| >>> # Define a new RunnerReconstructor | |
| >>> @RUNNER_BUILDERS.register_module() | |
| >>> class MyRunnerConstructor: | |
| ... def __init__(self, runner_cfg, default_args=None): | |
| ... if not isinstance(runner_cfg, dict): | |
| ... raise TypeError('runner_cfg should be a dict', | |
| ... f'but got {type(runner_cfg)}') | |
| ... self.runner_cfg = runner_cfg | |
| ... self.default_args = default_args | |
| ... | |
| ... def __call__(self): | |
| ... runner = RUNNERS.build(self.runner_cfg, | |
| ... default_args=self.default_args) | |
| ... # Add new properties for existing runner | |
| ... runner.my_name = 'my_runner' | |
| ... runner.my_function = lambda self: print(self.my_name) | |
| ... ... | |
| >>> # build your runner | |
| >>> runner_cfg = dict(type='EpochBasedRunner', max_epochs=40, | |
| ... constructor='MyRunnerConstructor') | |
| >>> runner = build_runner(runner_cfg) | |
| """ | |
| def __init__(self, runner_cfg, default_args=None): | |
| if not isinstance(runner_cfg, dict): | |
| raise TypeError('runner_cfg should be a dict', | |
| f'but got {type(runner_cfg)}') | |
| self.runner_cfg = runner_cfg | |
| self.default_args = default_args | |
| def __call__(self): | |
| return RUNNERS.build(self.runner_cfg, default_args=self.default_args) | |