问题标签 [hyperopt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1214 浏览

python - Hyperopt 分类任务引发错误“TypeError: __init__() got an unexpected keyword argument 'n_iter'”

我正在尝试使用 Hyperopt 使用 Google Colab 优化我的数据集上的分类任务。但是,它的实用程序之一,交叉验证不起作用并引发此错误:TypeError: init () got an unexpected keyword argument 'n_iter'。另外,即使我从代码中删除了交叉验证参数,有时它仍然会给出相同的错误,并且我必须多次重新运行相同的代码才能达到没有任何错误的结果。我在互联网上搜索,这里显示的实现对我不起作用。我的代码和引发的错误如下:

我确实尝试将 n_iter 从 None 更改为 0(这是我之前在 Github 中看到的推荐的东西),但它在 estimator.py 中已经是 0,如下所示:

n_iters = 0 # 跟踪训练迭代次数

所以我想不出任何其他的解决方案。我该如何解决这个问题?

0 投票
1 回答
505 浏览

python - 贝叶斯优化可能不适用于 CNN 的一些原因是什么

我尝试将贝叶斯优化应用于 MNIST 手写数字数据集的简单 CNN,但几乎没有迹象表明它有效。我已经尝试进行 k 折验证以消除噪声,但似乎优化似乎没有在向最优参数收敛方面取得任何进展。一般来说,贝叶斯优化可能失败的主要原因是什么?在我的特殊情况下?

剩下的只是上下文和代码片段。

型号定义:

使用超参数运行一次训练:batch_size = 32,学习率 = 1e-2,动量 = 0.9,10 个 epoch。(蓝色 = 训练,黄色 = 验证)。

在此处输入图像描述

用于 5 倍交叉验证准确性的箱须图,具有与上述相同的超参数(以了解传播)

在此处输入图像描述

网格搜索将 batch_size 保持在 32,并保持 10 个 epoch。我是在单次评估而不是 5 倍的情况下这样做的,因为价差不足以破坏结果。

在此处输入图像描述 在此处输入图像描述

贝叶斯优化。如上,batch_size=32 和 10 个 epoch。搜索相同的范围。但这次使用 5 折交叉验证来消除噪音。它应该进行 100 次迭代,但这还需要 20 个小时。

在此处输入图像描述

试验学习率 在此处输入图像描述

经受考验的势头 在此处输入图像描述

从第 27 次迭代到第 49 次迭代看起来不错,但随后又失去了理智。

编辑

询问的人更详细。

进口

单一评价

交叉验证

我如何设置贝叶斯优化(或随机搜索)

然后我如何实际运行贝叶斯优化。

0 投票
0 回答
297 浏览

performance - 光线调谐;将基于人群的培训计划与 Hyperopt 相结合

基于人群的训练 (PBT) 和 HyperOpt 搜索是否可以组合?

AsyncHyperBandScheduler 用于Hyperopt示例ray.tune

这里config为run()函数设置了一些参数

space 是Tune Search Algorithm中超参数 Space 的参数,具有hyperopt以下功能:

然而在Keras 的基于人口的示例中,超参数空间是由Tune Trials Schedulerhyperparam_mutations内部松散给出的,具有函数numpy

并且 config 以不同的方式使用:

为群体中的个体设置起始参数

总结一下:

Hyperopt 在 Search Algorithm 中使用超参数空间和hyperopt函数 基于人口的训练在 Trials Scheduler 中使用超参数空间numpy两者都使用不同的 Config

从这个答案我认为,Hyperopt 搜索只会考虑已完成的试验。

Hyperopt Search 中的采样超参数和基于人口的训练中的“运行时更改”超参数是否存在冲突?引用:“一次试验可能会在其生命周期内看到许多不同的超参数”

0 投票
1 回答
234 浏览

python - 对数据帧的多个子集进行 Hyperopt

我有以下数据框:

我想仅基于“名称”和“添加”的几个组合来运行 hyperopt。话虽如此,我已使用以下代码将此数据帧拆分为一个子集:

使用上述逻辑,我构建了函数:

stime = time.time()

从 keras.callbacks 导入回调

}

但这适用于 Name & Add 的所有组合,同时具有相同的超参数,然后转到下一组超参数。相反,我希望它为 name 和 add 的一个组合运行所有可能的超参数,然后去下一个组合。

0 投票
1 回答
1275 浏览

python - 如何从 hyperopt hp.choice 中提取选定的超参数?

hyperopt用来寻找catboost回归量的最佳超参数。我正在遵循本指南。相关部分是:

几分钟后,我得到了这个:

{'learning_rate': 4}

如何提取最佳学习率?是 np.arange(0.05, 0.31, 0.05)[4]吗?有没有更好的提取方法?

0 投票
1 回答
935 浏览

python-3.x - Hyperopt 调优参数卡住

我正在测试使用 hyperopt 库调整 SVM 的参数。通常,当我执行此代码时,进度条会停止并且代码会卡住。我不明白为什么。

这是我的代码:

0 投票
1 回答
1182 浏览

python - Hyperopt 与 Spark MlLib 的集成

有没有人有一个将 Hyperopt 集成到 Spark 的 MlLib 中的好例子?我一直在尝试在 Databricks 上这样做并继续遇到同样的错误。我不确定这是否是我的目标函数的问题,或者是否与 pyspark 上的 Spark ML 以及它如何与 Databricks 挂钩。

运行后,我收到以下错误:

Total Trials: 0: 0 succeeded, 0 failed, 0 cancelled. py4j.Py4JException: Method __getstate__([]) does not exist

0 投票
1 回答
213 浏览

python - Hyperopt中只有整数标量数组可以转换为标量索引错误

我正在尝试使用Hyperopt库优化一组参数。我按照本教程实现了代码。只要我将max_evals设置为少于 30 次,一切正常。当我将max_evals 设置为 30 时,在第 20 次迭代时出现以下错误:

Traceback(最近一次通话最后):文件“/Users/sulekahelmini/Documents/fyp/fyp_work/MLscripts/Optimizehyperopt.py”,第 149 行,在 trial=trials 中)文件“/Users/sulekahelmini/Documents/fyp/condaEnv/envConda /lib/python3.7/site-packages/hyperopt/fmin.py”,第 482 行,在 fmin show_progressbar=show_progressbar,文件“/Users/sulekahelmini/Documents/fyp/condaEnv/envConda/lib/python3.7/site- packages/hyperopt/base.py”,第 686 行,在 fmin show_progressbar=show_progressbar,文件“/Users/sulekahelmini/Documents/fyp/condaEnv/envConda/lib/python3.7/site-packages/hyperopt/fmin.py”中,第 509 行,在 fmin rval.exhaust() 文件“/Users/sulekahelmini/Documents/fyp/condaEnv/envConda/lib/python3.7/site-packages/hyperopt/fmin.py”中,第 330 行,在排气 self.run (自己。max_evals - n_done,block_until_done=self.asynchronous)文件“/Users/sulekahelmini/Documents/fyp/condaEnv/envConda/lib/python3.7/site-packages/hyperopt/fmin.py”,第 266 行,运行 new_ids,self .domain,试验,self.rstate.randint(2 ** 31 - 1)文件“/Users/sulekahelmini/Documents/fyp/condaEnv/envConda/lib/python3.7/site-packages/hyperopt/tpe.py”,第 939 行,建议 idxs,vals = pyll.rec_eval(posterior, memo=memo, print_node_on_error=False) File "/Users/sulekahelmini/Documents/fyp/condaEnv/envConda/lib/python3.7/site-packages/hyperopt/ pyll/base.py”,第 911 行,在 rec_eval rval = scope._impls[node.name](*args, **kwargs) 文件“/Users/sulekahelmini/Documents/fyp/condaEnv/envConda/lib/python3.7 /site-packages/hyperopt/tpe.py”,第 430 行,在adaptive_parzen_normal srtd_mus[:prior_pos] = mus[order[:prior_pos]] TypeError: only integer scalar arrays can be convert to a scalar index

下面显示的是我的代码,我在这里做错了什么?

0 投票
1 回答
326 浏览

apache-spark - 如何在 pandas_udf 中使用 Hyperopt 和 MLFlow?

我正在构建多个 Prophet 模型,其中每个模型都传递给 pandas_udf 函数,该函数训练模型并使用 MLflow 存储结果。

然后我称这个 UDF 为每个 KPI 训练一个模型。

这个想法是,对于每个 KPI,模型将使用多个超参数进行训练,并将每个模型的最佳参数存储在 MLflow 中。我想使用 Hyperopt 来提高搜索效率。

在这种情况下,我应该把目标函数放在哪里?由于数据被传递给每个模型的 UDF,我想在 UDF 中创建一个内部函数,该函数使用每次运行的数据。这有意义吗?

0 投票
1 回答
239 浏览

machine-learning - Hyperopt 更改 Trials() 对象的值;热启动 Hyperopt

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