Python 超新星没有返回最佳结果

Python 超新星没有返回最佳结果,python,hyperopt,hyperas,Python,Hyperopt,Hyperas,我使用hyperas优化函数,但它并没有返回最佳结果。在运行期间,打印输出内容如下 100%|██████████| 100/100 [7:01:47<00:00, 411.15s/it, best loss: 5.1005506645909895e-05] 这已经发生过好几次了,我不明白为什么。我写了一个重复的例子,我得到了同样的问题 def test_function(): x={{uniform(-23,23)}} function=x**2+x retu

我使用hyperas优化函数,但它并没有返回最佳结果。在运行期间,打印输出内容如下

100%|██████████| 100/100 [7:01:47<00:00, 411.15s/it, best loss: 5.1005506645909895e-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]

为什么我的
最佳运行
结果与优化运行中的最小损失不一致?

您是否认为
最佳运行
最佳损失
不是一回事


best_run
返回您的损失的argmin,对于
f(x)=x**2+x
来说,它实际上是
x=-1/2
,而
best loss
返回它的最小值,即
f(-1/2)=-1/4

哇,这绝对是我示例代码中的一个疏忽。我认为best_run实际上会将输入值返回给函数,但这仍然是问题所在。我想我仍然有一个问题,我的真实例子,虽然。让我检查我的代码,我没有看到相同的问题。不知道发生了什么。谢谢你的回答,确实帮助我发现了这个问题,但是现在你已经证明了我的示例代码是有效的,我想这是我自己的代码中的一些东西。如果你能提供更多关于你的模型的信息,你的真实示例,我也许可以帮助你。现在,我看不出有什么问题。您是否有可能对NNs进行超参数调整?没有,我正在构建一个叠加xgboost模型,该模型结合了几种不同类型的模型。我意识到正在发生的事情是optim.minimize的输出给了我运行的最后一个输出,而不是性能最好的输出。我不知道该怎么办
100%|██████████| 100/100 [00:00<00:00, 498.77it/s, best loss: -0.24773021221244024]
{'x': -0.5476422899067598}