问题标签 [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.
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 # 跟踪训练迭代次数
所以我想不出任何其他的解决方案。我该如何解决这个问题?
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 次迭代看起来不错,但随后又失去了理智。
编辑
询问的人更详细。
进口
单一评价
交叉验证
我如何设置贝叶斯优化(或随机搜索)
然后我如何实际运行贝叶斯优化。
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 中的采样超参数和基于人口的训练中的“运行时更改”超参数是否存在冲突?引用:“一次试验可能会在其生命周期内看到许多不同的超参数”
python - 对数据帧的多个子集进行 Hyperopt
我有以下数据框:
我想仅基于“名称”和“添加”的几个组合来运行 hyperopt。话虽如此,我已使用以下代码将此数据帧拆分为一个子集:
使用上述逻辑,我构建了函数:
stime = time.time()
从 keras.callbacks 导入回调
}
但这适用于 Name & Add 的所有组合,同时具有相同的超参数,然后转到下一组超参数。相反,我希望它为 name 和 add 的一个组合运行所有可能的超参数,然后去下一个组合。
python - 如何从 hyperopt hp.choice 中提取选定的超参数?
我hyperopt
用来寻找catboost
回归量的最佳超参数。我正在遵循本指南。相关部分是:
几分钟后,我得到了这个:
{'learning_rate': 4}
如何提取最佳学习率?是 np.arange(0.05, 0.31, 0.05)[4]
吗?有没有更好的提取方法?
python-3.x - Hyperopt 调优参数卡住
我正在测试使用 hyperopt 库调整 SVM 的参数。通常,当我执行此代码时,进度条会停止并且代码会卡住。我不明白为什么。
这是我的代码:
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
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
下面显示的是我的代码,我在这里做错了什么?
apache-spark - 如何在 pandas_udf 中使用 Hyperopt 和 MLFlow?
我正在构建多个 Prophet 模型,其中每个模型都传递给 pandas_udf 函数,该函数训练模型并使用 MLflow 存储结果。
然后我称这个 UDF 为每个 KPI 训练一个模型。
这个想法是,对于每个 KPI,模型将使用多个超参数进行训练,并将每个模型的最佳参数存储在 MLflow 中。我想使用 Hyperopt 来提高搜索效率。
在这种情况下,我应该把目标函数放在哪里?由于数据被传递给每个模型的 UDF,我想在 UDF 中创建一个内部函数,该函数使用每次运行的数据。这有意义吗?
machine-learning - Hyperopt 更改 Trials() 对象的值;热启动 Hyperopt
我正在寻找一种可能来启动 Hyperopt。一种方法是用超参数手动填充列表Trials.trials
这实际上是可能的,但我想知道这是否真的影响优化,或者这个 Trials.trials 是否只是 Trials 对象和 Hyperopt 的可见部分。