ray.tune.search.nevergrad.NevergradSearch#
- class ray.tune.search.nevergrad.NevergradSearch(optimizer: nevergrad.optimization.Optimizer | Type[nevergrad.optimization.Optimizer] | nevergrad.optimization.base.ConfiguredOptimizer | None = None, optimizer_kwargs: Dict | None = None, space: Dict | nevergrad.p.Parameter | None = None, metric: str | None = None, mode: str | None = None, points_to_evaluate: List[Dict] | None = None)[源代码]#
基类:
Searcher
使用 Nevergrad 优化超参数。
Nevergrad 是 Facebook 的一个开源无导数优化工具。更多信息可以在以下网址找到:facebookresearch/nevergrad。
您需要通过以下命令安装 Nevergrad:
$ pip install nevergrad
- 参数:
optimizer – 来自 Nevergrad 的优化器类。可用的优化器请参见此处:https://facebookresearch.github.io/nevergrad/optimizers_ref.html#optimizers。这也可以是
ConfiguredOptimizer
的一个实例。请参阅上述链接中关于配置优化器的部分。optimizer_kwargs – 实例化
优化器
时传入的 Kwargsspace – 在实例化优化器时要传递的 Nevergrad 参数化,或者如果你传递了一个优化器对象,则为参数名称列表。
metric – 训练结果目标值属性。如果为 None 但传递了模式,则默认使用匿名度量
_metric
。mode – 其中之一 {min, max}。确定目标是最小化还是最大化指标属性。
points_to_evaluate – 初始参数建议首先运行。当你已经有一些好的参数想要首先运行以帮助算法为未来的参数做出更好的建议时,可以使用此功能。需要是一个包含配置的dict列表。
Tune 自动将搜索空间转换为 Nevergrad 的格式:
import nevergrad as ng config = { "width": tune.uniform(0, 20), "height": tune.uniform(-100, 100), "activation": tune.choice(["relu", "tanh"]) } current_best_params = [{ "width": 10, "height": 0, "activation": relu", }] ng_search = NevergradSearch( optimizer=ng.optimizers.OnePlusOne, metric="mean_loss", mode="min", points_to_evaluate=current_best_params) run(my_trainable, config=config, search_alg=ng_search)
如果你想手动传递搜索空间,代码会是这样的:
import nevergrad as ng space = ng.p.Dict( width=ng.p.Scalar(lower=0, upper=20), height=ng.p.Scalar(lower=-100, upper=100), activation=ng.p.Choice(choices=["relu", "tanh"]) ) ng_search = NevergradSearch( optimizer=ng.optimizers.OnePlusOne, space=space, metric="mean_loss", mode="min") run(my_trainable, search_alg=ng_search)
方法
传递从已单独评估的点获得的结果。
传递已单独评估的试验结果。
试用完成的通知。
训练期间结果的通知(可选)。
从给定的 checkpoint_dir 恢复搜索器的状态。
自动将给定的搜索器保存到 checkpoint_dir。
设置此搜索器可以运行的最大并发试验次数。
属性
训练结果目标值属性。
指定是否最小化或最大化指标。