Hyperas 未返回最佳结果
Hyperas not returning best result
我正在使用 hyperas 优化一个函数,但它没有返回最佳结果。在 运行 期间,打印输出内容如下
100%|██████████| 100/100 [7:01:47<00:00, 411.15s/it, best loss: 5.1005506645909895e-05]
但之后当我打印最佳模型的结果时,我得到
5.8413380939757486e-05
这种情况已经发生过几次了,我不明白为什么。我写了一个可重现的例子,但我遇到了同样的问题。
def test_function():
x={{uniform(-23,23)}}
function=x**2+x
return {'loss': function, 'status': STATUS_OK, 'model': function}
###just a dummy function to get the optimization to run, my real function uses real data
def data_example():
print('skip')
return [0,1,2]
trials=Trials()
# trials=pickle.load(open(trials_file, "rb"))
print('started new set of optimization runs')
if __name__ == '__main__':
best_run, best_model = optim.minimize(model=test_function,
data=data_example,
algo=tpe.suggest,
trials=trials,
max_evals=100)
print(best_run)
我上次 运行 这个状态栏显示
100%|██████████| 100/100 [00:00<00:00, 498.77it/s, best loss: -0.24773021221244024]
并且 print(best_run)
显示
{'x': -0.5476422899067598}
为什么我的 best_run
结果不符合优化中的最小损失 运行?
你有没有想过 best_run
和 best loss
不是一回事?
best_run
returns 你损失的 argmin,对于 f(x) = x**2+x
和 [=11 确实是 x = -1/2
=] returns 它的 min 值,即 f(-1/2) = -1/4
.
我正在使用 hyperas 优化一个函数,但它没有返回最佳结果。在 运行 期间,打印输出内容如下
100%|██████████| 100/100 [7:01:47<00:00, 411.15s/it, best loss: 5.1005506645909895e-05]
但之后当我打印最佳模型的结果时,我得到
5.8413380939757486e-05
这种情况已经发生过几次了,我不明白为什么。我写了一个可重现的例子,但我遇到了同样的问题。
def test_function():
x={{uniform(-23,23)}}
function=x**2+x
return {'loss': function, 'status': STATUS_OK, 'model': function}
###just a dummy function to get the optimization to run, my real function uses real data
def data_example():
print('skip')
return [0,1,2]
trials=Trials()
# trials=pickle.load(open(trials_file, "rb"))
print('started new set of optimization runs')
if __name__ == '__main__':
best_run, best_model = optim.minimize(model=test_function,
data=data_example,
algo=tpe.suggest,
trials=trials,
max_evals=100)
print(best_run)
我上次 运行 这个状态栏显示
100%|██████████| 100/100 [00:00<00:00, 498.77it/s, best loss: -0.24773021221244024]
并且 print(best_run)
显示
{'x': -0.5476422899067598}
为什么我的 best_run
结果不符合优化中的最小损失 运行?
你有没有想过 best_run
和 best loss
不是一回事?
best_run
returns 你损失的 argmin,对于 f(x) = x**2+x
和 [=11 确实是 x = -1/2
=] returns 它的 min 值,即 f(-1/2) = -1/4
.