gpt4 book ai didi

python - Hyperopt 参数空间 : TypeError: int() argument must be a string or a number, 不是 'Apply'

转载 作者:行者123 更新时间:2023-12-05 06:37:06 25 4
gpt4 key购买 nike

在我更新几个软件包(包括 scikit-learn)之前,它运行完美。现在,下面的代码给了我一个 TypeError。

from hyperopt import fmin, tpe, hp, STATUS_OK, Trials

def para_space():

space_paras = {'model_type': hp.choice('model_type', ['f1', 'f2', 'f3', 'f4']),
'output_units': hp.uniform('output_units', 1, 10)}
return space_paras

if __name__=='__main__':

params = para_space()

if params['model_type'] == 'f1':
include_hours = True
include_features = False
else:
include_hours = True
include_features = True

out = int(params['output_units'])

我使用的是 python 2.7.12、hyperopt 0.1 版和 sklearn 0.18.1 版。完整回溯:

Traceback (most recent call last):
File "testJan25.py", line 26, in <module>
out = int(params['output_units'])
TypeError: int() argument must be a string or a number, not 'Apply'

知道如何将 hp.uniform 的结果转换为整数吗?

编辑:

假设我改用 hp.randint:

def para_space():

space_paras = {'model_type': hp.choice('model_type', ['f1', 'f2', 'f3', 'f4']),
'output_units': hp.randint('output_units', 10)}
return space_paras

及以后:

    print params['output_units']

然后这是输出:

0 hyperopt_param
1 Literal{output_units}
2 randint
3 Literal{10}

但 hyperopt 的全部意义在于为超参数优化提供随机值。肯定有办法从中提取值(value)吗?

最佳答案

hyperopt 包允许您定义参数空间。要对该参数空间的值进行采样以在模型中使用,您需要一个 Trials() 对象。

def model_1(params):
#model definition here....
return 0

params = para_space()
#model_1(params) #THIS IS A PROBLEM! YOU CAN'T CALL THIS. YOU NEED A TRIALS() OBJECT.

trials = Trials()
best = fmin(model_1, params, algo=tpe.suggest, max_evals=1, trials=trials)

关于python - Hyperopt 参数空间 : TypeError: int() argument must be a string or a number, 不是 'Apply',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48450932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com