ray.tune.search.basic_variant.BasicVariantGenerator#
- class ray.tune.search.basic_variant.BasicVariantGenerator(points_to_evaluate: List[Dict] | None = None, max_concurrent: int = 0, constant_grid_search: bool = False, random_state: int | numpy.random.Generator | numpy.random.RandomState | None = None)[源代码]#
基类:
SearchAlgorithm
使用 Tune 的变体生成来解析变量。
如果没有指定其他搜索算法,则使用此默认搜索算法。
- 参数:
points_to_evaluate – 初始参数建议首先运行。当你已经有一些好的参数想要首先运行以帮助算法为未来的参数做出更好的建议时,可以使用此功能。需要是一个包含配置的dict列表。
max_concurrent – 最大并发运行试验数。如果为0(默认),则不设上限。
constant_grid_search – 如果设置为
True
,Ray Tune 将 首先 尝试采样随机值,并在网格搜索参数中保持这些值不变。如果设置为False
(默认),Ray Tune 将在每次网格搜索条件下采样新的随机参数。random_state – 用于可重复结果的种子或 numpy 随机生成器。如果为 None(默认),将使用全局 numpy 随机生成器(
np.random
)。请注意,在分布式环境中无法保证完全的可重复性。
示例:
from ray import tune # This will automatically use the `BasicVariantGenerator` tuner = tune.Tuner( lambda config: config["a"] + config["b"], tune_config=tune.TuneConfig( num_samples=4 ), param_space={ "a": tune.grid_search([1, 2]), "b": tune.randint(0, 3) }, ) tuner.fit()
在上面的例子中,将生成8次试验:对于每个样本(
4
),网格搜索中``a``的每个变体将被采样一次。``b``参数将被随机采样。生成器接受一个预设的评估点列表。这些点将替换传递给
BasicVariantGenerator
的每个实验的第一个样本。每个点将替换指定
num_samples
的一个样本。如果网格搜索变量被预设中的值覆盖,样本数量将会因此减少。示例:
from ray import tune from ray.tune.search.basic_variant import BasicVariantGenerator tuner = tune.Tuner( lambda config: config["a"] + config["b"], tune_config=tune.TuneConfig( search_alg=BasicVariantGenerator(points_to_evaluate=[ {"a": 2, "b": 2}, {"a": 1}, {"b": 2} ]), num_samples=4 ), param_space={ "a": tune.grid_search([1, 2]), "b": tune.randint(0, 3) }, ) tuner.fit()
上面的例子将通过四个样本产生六个试验:
第一个示例将生成一个试验,其中
a=2
和b=2
。第二个示例将生成一个试验,其中
a=1
且b
随机采样第三个示例将生成两个试验,每个试验对应
a
的一个网格搜索值。这两个试验的b
值都将为2
。第四个样本将产生两个试验,每个试验对应
a
的一个网格搜索值。b
将在这两个试验中随机且独立地采样。
方法
根据实验规范生成链。
在 dirpath 内是否存在检查点文件。
如果没有试验需要排队进入 TrialRunner,则返回 True。
提供一个试验对象,将其排队到试验运行器中。
在每次试验返回的中间结果上调用。
从 dirpath 恢复 self + 搜索器 + 搜索包装器。
标记搜索算法为已完成。
将搜索属性传递给搜索算法。
属性
获取要生成的总试验次数