Можно ли комбинировать обучение на основе населения (PBT) и поиск HyperOpt?
AsyncHyperBandScheduler используется в примере Hyperopt из ray.tune
Здесь конфигурация задает некоторые параметры для функции run()
config = {
"num_samples": 10 if args.smoke_test else 1000,
"config": {
"iterations": 100,
},
"stop": {
"timesteps_total": 100
},
}
и пробел является аргументом для гиперпараметра Space внутри Tune Search Algorithm с функциями 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 пространство гиперпараметров свободно дается hyperparam_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 занимает свое пространство гиперпараметра внутри Алгоритм поиска с функциями hyperopt
Обучение на основе численности населения занимает пространство гиперпараметров внутри Планировщика испытаний с функциями numpy
. Обе настройки по-разному используются
F из этого ответа Я так понимаю, что поиск Hyperopt будет учитывать только завершенные испытания.
Есть ли конфликт с выборочными гиперпараметрами из поиска Hyperopt и "измененными во время работы" гиперпараметрами из Population- Обучение? цитата: «В одном испытании может быть много разных гиперпараметров за время жизни»