performance - 光线调谐;将基于人群的培训计划与 Hyperopt 相结合
问题描述
基于人群的训练 (PBT) 和 HyperOpt 搜索是否可以组合?
AsyncHyperBandScheduler 用于Hyperopt示例ray.tune
这里config为run()
函数设置了一些参数
config = {
"num_samples": 10 if args.smoke_test else 1000,
"config": {
"iterations": 100,
},
"stop": {
"timesteps_total": 100
},
}
space 是Tune Search Algorithm中超参数 Space 的参数,具有hyperopt
以下功能:
space = {
"width": hp.uniform("width", 0, 20),
"height": hp.uniform("height", -100, 100),
"activation": hp.choice("activation", ["relu", "tanh"])
}
algo = HyperOptSearch()
scheduler = AsyncHyperBandScheduler()
run(easy_objective, search_alg=algo, scheduler=scheduler, **config)
然而在Keras 的基于人口的示例中,超参数空间是由Tune Trials Schedulerhyperparam_mutations
内部松散给出的,具有函数numpy
pbt = PopulationBasedTraining(
hyperparam_mutations={
"dropout": lambda: np.random.uniform(0, 1),
"lr": lambda: 10**np.random.randint(-10, 0),
"rho": lambda: np.random.uniform(0, 1)
})
并且 config 以不同的方式使用:
为群体中的个体设置起始参数
run(MemNNModel,scheduler=pbt,
config={
"batch_size": 32,
"epochs": 1,
"dropout": 0.3,
"lr": 0.01,
"rho": 0.9
})
总结一下:
Hyperopt 在 Search Algorithm 中使用超参数空间和hyperopt
函数 基于人口的训练在 Trials Scheduler 中使用超参数空间numpy
两者都使用不同的 Config
从这个答案我认为,Hyperopt 搜索只会考虑已完成的试验。
Hyperopt Search 中的采样超参数和基于人口的训练中的“运行时更改”超参数是否存在冲突?引用:“一次试验可能会在其生命周期内看到许多不同的超参数”
解决方案
推荐阅读
- json - Ansible 代码读取 json 文件以创建输出
- google-sheets - 我想将此查询用作数组公式
- php - 如何在 macOS Catalina 上使用 brew 为 PHP 7.4 安装 memcached 3.1.4?
- sql - 如何查询客户之前是否给过较低的评价?
- c# - 连接列表的属性
并在 C# 中写入文件 - wpf - 第一次左键单击 wpf 按钮时 ContextMenu 为空
- cuda - Correct implementation of spin lock in CUDA
- knockout.js - Confused with legacy knockout code. Can't tell if it's commented out or not
- php - psr-4 autoload not working on namecheap.com live server
- java - Use "()" in Spring data.repository @query annotation