除此之外还有什么HyperOpt
可以支持超参数搜索的多处理吗?我知道HyperOpt
可以配置使用MongoDB
,但似乎很容易出错并在杂草中度过一个星期,有什么更受欢迎和有效的吗?
问问题
1635 次
2 回答
2
看看雷调谐!
您可以将它用于随机搜索、网格搜索和进化方法的多处理和多机器执行。它还具有流行算法的实现,例如 HyperBand。
这是文档页面 - ray.readthedocs.io/en/latest/tune.html
以一次运行 4 个并行实验为例:
import ray
import ray.tune as tune
def my_func(config, reporter): # add the reporter parameter
import time, numpy as np
i = 0
while True:
reporter(timesteps_total=i,
mean_accuracy=i ** config["alpha"])
i += 1
time.sleep(.01)
tune.register_trainable("my_func", my_func)
ray.init(num_cpus=4)
tune.run_experiments({
"my_experiment": {
"run": "my_func",
"stop": { "mean_accuracy": 100 },
"config": {
"alpha": tune.grid_search([0.2, 0.4, 0.6]),
"beta": tune.grid_search([1, 2]) } } })
免责声明:我从事这个项目 - 如果您有任何反馈,请告诉我!
于 2018-04-01T08:29:58.220 回答
1
一些模型(比如 RandomForest)有“njobs”参数用于使用核心数。你可以试试 njobs=-1; 因此,即使 hyperopt 使用 1 个核心,每次试验也会使用所有核心,从而加快进程。
于 2020-09-17T06:54:19.453 回答