【问题标题】:Hyperopt Change Values of Trials() Object maually; Warm Start HyperoptHyperopt 更改 Trials() 对象的值;热启动 Hyperopt
【发布时间】:2020-06-05 22:53:22
【问题描述】:

我正在寻找一种可能性来启动 Hyperopt。 一种方法是使用超参数手动填充列表Trials.trials 这实际上是可能的,但我想知道这是否真的会影响优化,或者这个 Trials.trials 是否只是 Trials 对象和 Hyperopt 的可见部分。

【问题讨论】:

  • 显然是 trial.trials 不是包含信息的部分。用不同的值覆盖它不会影响 tpe.py 中的值
  • base.py 的 refresh() 函数将 auf trial.trials 的值改回原来的设置值

标签: machine-learning hyperparameters automl hyperopt


【解决方案1】:

trials.trials 列表不包含所有信息! 由于baye.py 中的resfresh 函数,还必须更改试验。

通常应该可以进行热启动。我通过在具有一些任意搜索空间和目标函数的新试验对象上调用 fmin,创建了一个与我的热启动状态大小相同的假试验对象。 在此之后,可以通过迭代 trial.trials 的长度并设置值来更改试验对象 像这样:

list_of_coldstart_dict = [one_possible_and_evaluation,second_possible_and_evaluation,...]
fake_space = {
'test': 2-hp.loguniform('test_02',0.001, 0.1)
}
def Objective(params):
    return {"loss":0, 'status': STATUS_OK}
trials = Trials()
fmin(Objective,fake_space,
    algo=partial(tpe.suggest, n_startup_jobs=len(list_of_coldstart_dict)), max_evals=len(list_of_coldstart_dicts), 
        trials=new_trials,verbose=1)

for in in range(len(trials.trials):
    trials.trials[i] = list_of_coldstart_dict[i]
    trials._dynamic_trials[i] = list_of_coldstart_dict[i]
    trials.results[i] = trials.trials[i]['result']

注意在 trial.trials[i] 中维护 dicts 的 dict 的 neccecary 结构

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-22
    • 2019-12-03
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 2014-08-30
    • 2020-11-05
    相关资源
    最近更新 更多