Hyperopt: 定义搜索空间

我在定义搜索空间的逻辑上遇到了麻烦。

我想搜索以下内容:

  • 使用的模型类型(features_and_hours, features_only, hours_only, no_features_no_hours)
  • 隐藏单元的数量(output_units)
  • 核矩阵的正则化(类型为 l1, l2, 或 l1l2)
  • 核矩阵的正则化值(从0.0到0.5的任意值)
  • 活动的正则化(类型为 l1, l2, 或 l1l2)
  • 活动的正则化值(从0.0到0.5的任意值)
  • 训练轮数(num_epochs,可选1, 5, 或10)
  • 使用的优化器(adadelta, adam, 或 rmsprop)
  • 是否以及如何应用注意力机制(before, after, 或 none)

我按照这个例子(页面上的第二个帖子,由jacobzweig发布)设置了如下方式:

def para_space():        space_paras = {'model_type': hp.choice('model_type', ['features_and_hours', 'features_only', 'hours_only', 'no_features_no_hours']),                        'output_units': hp.uniform('output_units', 1, 10),                        'kernel_reg': hp.choice('kernel_reg', [{'reg_type':'l1', 'reg_vals': hp.uniform('reg_vals', 0.0, 0.5)},                                                                {'reg_type':'l2','reg_vals': hp.uniform('reg_vals', 0.0, 0.5)},                                                                {'reg_type':'l1l2', 'reg_vals': hp.uniform('reg_vals', 0.0, 0.5)}]),                        'activity_reg': hp.choice('activity_reg', [{'reg_type':'l1', 'reg_vals': hp.uniform('reg_vals', 0.0, 0.5)},                                                                {'reg_type':'l2','reg_vals': hp.uniform('reg_vals', 0.0, 0.5)},                                                                {'reg_type':'l1l2', 'reg_vals': hp.uniform('reg_vals', 0.0, 0.5)}]),                        'num_epochs': hp.choice('num_epochs', [1, 5, 10]),                        'optimizer': hp.choice('optimizer', ['adadelta', 'adam', 'rmsprop']),                        'attention': hp.choice('attention', ['before', 'after', 'none'])}        return space_paras

我得到的错误是:

Using TensorFlow backend.Traceback (most recent call last):  File "Jan22Model1.py", line 374, in <module>    best = fmin(lstm_model_1, params, algo=tpe.suggest, max_evals=5, trials=trials)  File "/user/pkgs/anaconda2/lib/python2.7/site-packages/hyperopt/fmin.py", line 307, in fmin    return_argmin=return_argmin,  File "/user/pkgs/anaconda2/lib/python2.7/site-packages/hyperopt/base.py", line 635, in fmin    return_argmin=return_argmin)  File "/user/pkgs/anaconda2/lib/python2.7/site-packages/hyperopt/fmin.py", line 314, in fmin    pass_expr_memo_ctrl=pass_expr_memo_ctrl)  File "/user/pkgs/anaconda2/lib/python2.7/site-packages/hyperopt/base.py", line 776, in __init__    raise DuplicateLabel(label)hyperopt.exceptions.DuplicateLabel: reg_vals

但是在例子中,似乎有重复的标签并没有引发错误。我做错了什么?


回答:

我最终重构了空间,解决了这个问题:

def para_space():    space_paras = {'model_type': hp.choice('model_type', ['features_and_hours', 'features_only', 'hours_only', 'no_features_no_hours']),                    'output_units': hp.uniform('output_units', 1, 10),                    'kernel_reg': hp.choice('kernel_reg', ['l1', 'l2', 'l1_l2']),                    'kernel_reg_value': hp.uniform('kernel_reg_value', 0.0, 0.5),                    'activity_reg': hp.choice('activity_reg', ['l1', 'l2', 'l1_l2']),                    'activity_reg_value': hp.uniform('activity_reg_value', 0.0, 0.5),                     'optimizer': hp.choice('optimizer', ['adadelta', 'adam', 'rmsprop']),                     'attention': hp.choice('attention', ['before', 'after', 'none'])}    return space_paras

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注