我不熟悉/ Ray编程,我有一个简单的问题,那就是在使用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,
)发布于 2020-01-20 13:04:54
tune.run()填充了这些字段,因此我们可以在其他地方使用它们。而停止标准只是我们可以使用它们的地方之一。
要了解该示例不起作用的原因,请考虑一个更简单的类比:episodes_total: 100
训练器本身就是增加剧集数量的人,这样系统的其余部分就可以知道我们进行了多远。如果我们试图改变它或将它固定为一个特定值,它不会对它们起作用。同样的推理也适用于list中的其他字段。
至于scheduler和search algorithms,我没有使用经验。但我们要做的是将这些条件放在时间表或搜索算法本身中,而不是直接放在训练器中。
下面是一个使用Bayesian optimisation search的例子,尽管我不知道这样做意味着什么:
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
}
)
)https://stackoverflow.com/questions/59666932
复制相似问题