reinforcement-learning - 是否可以使用 ray Tune 搜索算法指定“episodes_this_iter”?
问题描述
我是编程/射线的新手,并且有一个简单的问题,即在使用 Ray Tune 时可以指定哪些参数。特别是,光线调谐文档说所有自动填充的字段(steps_this_iter、episodes_this_iter 等)都可以用作停止条件或在调度程序/搜索算法规范中。
但是,以下仅在我删除“episodes_this_iter”规范后才有效。这是否仅作为停止标准的一部分起作用?
ray.init()
tune.run(
PPOTrainer,
stop = {"training_iteration": 1000},
config={"env": qsdm.QSDEnv,
"env_config": defaultconfig,
"num_gpus": 0,
"num_workers": 1,
"lr": tune.grid_search([0.00005, 0.00001, 0.0001]),},
"episodes_this_iter": 2500,
)
解决方案
tune.run()
是填充这些字段的那个,因此我们可以在其他地方使用它们。停止标准只是我们可以使用它们的地方之一。
要了解该示例为何不起作用,请考虑一个更简单的类比:
episodes_total: 100
培训师本身是增加情节计数的人,因此系统的其余部分知道我们走了多远。如果我们尝试将其更改或将其修复为特定值,则对它们不起作用。相同的推理适用于列表中的其他字段。
至于调度器和搜索算法,我没有经验。但是我们要做的是将这些条件放在时间表或搜索算法本身中,而不是直接放在训练器中。
这是一个贝叶斯优化搜索的例子,虽然我不知道这样做意味着什么:
from ray.tune.suggest.bayesopt import BayesOptSearch
tune.run(
# ...
# 10 trials
num_samples=10,
search_alg=BayesOptSearch(
# look for learning rates within this range:
{'lr': (0.1, 0.00001)},
# optimise for this metric:
metric='episodes_this_iter', # <------- auto-filled field here
mode='max',
utility_kwargs={
'kind': 'ucb',
'kappa': '2.5',
'xi': 0.0
}
)
)
推荐阅读
- python - @property 在 Django 中的 models.py 中有两个函数
- git - 拉动时出现 Git 致命错误,无法锁定引用,无法解析引用,引用已损坏
- javascript - 有没有办法限制来自 youtube api 的查询数量?
- javascript - 有没有办法通过特定值获取元素
- python - 如何多次运行多个脚本
- reactjs - React mapDispatchToProps 对象操作不起作用
- java - 如何在事务中使用具有并行性的临时表?
- docker - 将 docker run 翻译成子组件
- c++ - 在 C++ 中对消息进行逻辑错误加密
- r - 如何根据条件添加具有累进数字的列