Source code for archai.discrete_search.search_spaces.config.helpers

# Copyright (c) Microsoft Corporation.
# Licensed under the MIT license.

from copy import deepcopy
from typing import Any, Dict, List, Optional, Union

from archai.discrete_search.search_spaces.config.discrete_choice import DiscreteChoice


[docs]def repeat_config( config_dict: Dict[str, Any], repeat_times: Union[int, List[int]], share_arch: Optional[bool] = False ) -> Dict[str, Any]: """Repeats an architecture config a variable number of times. Args: config_dict (Dict[str, Any]): Config dictionary to repeat. repeat_times (Union[int, List[int]]): If an integer, the number of times to repeat the config will be treated as constant. If a list of integers, the number of times to repeat the config will be also considered an architecture parameter and will be sampled from the list. share_arch (bool, optional): Whether to share the architecture parameters across the repeated configs. Defaults to False. Returns: Dict[str, Any]: Config dictionary with the repeated config. """ repeat_times = [repeat_times] if isinstance(repeat_times, int) else repeat_times return { "_config_type": "config_list", "_share_arch": share_arch, "_repeat_times": DiscreteChoice(repeat_times), "_configs": {str(i): (config_dict if share_arch else deepcopy(config_dict)) for i in range(max(repeat_times))}, }