Source code for archai.discrete_search.api.searcher
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT license.
from abc import abstractmethod
from typing import Callable
from overrides import EnforceOverrides
from archai.discrete_search.api.search_results import SearchResults
[docs]class Searcher(EnforceOverrides):
"""Abstract class for searchers.
This class serves as a base for implementing searchers, which searches for an
architecture given an algorithm. The class enforces implementation of a single
method: `search`.
Note:
This class is inherited from `EnforceOverrides` and any overridden methods in the
subclass should be decorated with `@overrides` to ensure they are properly overridden.
Examples:
>>> class MySearcher(Searcher):
>>> def __init__(self) -> None:
>>> super().__init__()
>>>
>>> @overrides
>>> def search(self) -> SearchResults:
>>> # Code used to search for the best architecture
>>> return SearchResults(...)
"""
def __init__(self) -> None:
"""Initialize the searcher."""
self.iteration_callbacks = []
[docs] @abstractmethod
def search(self) -> SearchResults:
"""Search for the best architecture.
Returns:
Search results.
"""
pass
[docs] def subscribe_start_iteration(self, fn : Callable[[int], None]):
self.iteration_callbacks += [fn]
[docs] def on_start_iteration(self, iteration: int):
for fn in self.iteration_callbacks:
fn(iteration)