问题标签 [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 回答
394 浏览

python - 如何防止“hyperopt”将失败的模型结果整合到参数更新中?

使用 python 中的 hyperopt 库,我想优化神经网络的参数。有时,选择的参数组合会导致模型不稳定,从而导致模型构建过程崩溃。

现在,我创建了一个 try/except 异常处理程序,可以防止整个超参数优化过程停止。我面临的问题是,hyperopt 更新仍然整合了失败模型的(任意选择的)损失结果,以通知后续参数选择。我希望 hyperopt 忽略失败的模型。我的目标函数如下:

如何与 hyperopt 更新程序通信,而不是整合失败模型的信息?

0 投票
2 回答
621 浏览

python-3.x - 使用 hyperas 查找 Keras 模型的参数时出现解码问题,可能是由于 `hyperopt` 中的 `Trial` 函数

我正在使用hyperas模块来调整我的Keras模型并返回错误:

调用地点发生错误,语法为trials

我认为问题的根源是由于我加载的 numpy .npy 文件是ascii编码格式数据。那么,如何将ascii格式更改为utf-8格式?

我通过添加看到了一些这样的解决方案,encoding='latin1'但它不起作用。

在此处添加我的整个回溯:

我想我最好把所有的traceback放在这里,所有的代码如下: https ://github.com/MinghaoDu1994/MyPythonFunctions/blob/master/1Dcnn

我认为问题是由于 中的功能Trialshyperopt但我没有找到像我这样的相关问题。

0 投票
1 回答
229 浏览

python - 如何在 Python 中找到 MemoryError 的来源?

我正在使用 Hyperopt 对神经网络进行超参数优化。这样做时,经过一些迭代,我得到一个 MemoryError 异常

到目前为止,我尝试在使用后清除所有变量(为它们分配 None 或空列表,有没有更好的方法?)并打印所有 locals()、dirs() 和 globals() 及其大小,但是这些数量永远不会增加,而且尺寸很小。

结构如下所示:

在 X 次迭代后(有时它会完成前 100 次并转移到第二个模型),它会引发内存错误。我的猜测是一些变量保留在内存中,我没有清除它们,但我无法检测到它们。

编辑:

0 投票
1 回答
422 浏览

python - TypeError: "set_postfix() argument after ** must be a mapping, not str" 使用 Hyperopt

我尝试运行这个简单的示例:

但这就是我在控制台中得到的:

TypeError: ** 后的 set_postfix() 参数必须是映射,而不是 str

为什么?

先感谢您!

0 投票
1 回答
412 浏览

python - 尝试在 python 中使用 hyperopt 调整最近邻居时出错

我第一次尝试使用 hyperopt 调整 KNeighbors 参数,但我遇到了一个奇怪的错误。不知道问题出在哪里,但希望得到解决。以下是有关此问题的更多详细信息:

代码:

错误:

部分数据:

所有数据类型都是 float32。错误是来自 KNeignoborsRegressor 还是来自数据或 hyperopt 以及如何解决?谢谢。

0 投票
1 回答
944 浏览

python - 了解 hyperopt 的 TPE 算法

我正在为我的主项目说明 hyperopt 的 TPE 算法,但似乎无法让算法收敛。从我从原始论文和 youtube讲座中了解到,TPE 算法按以下步骤工作:

(在下文中,x = 超参数和 y = 损失)

  1. 首先创建一个 [x,y] 的搜索历史,比如 10 个点。
  2. 根据损失对超参数进行排序,并使用一些分位数 γ 将它们分成两组(γ = 0.5 表示这些组的大小相同)
  3. 对差的超参数组 (g(x)) 和好的超参数组 (l(x)) 进行核密度估计
  4. 好的估计在 g(x) 中的概率很低,在 l(x) 中的概率很高,因此我们建议在 argmin(g(x)/l(x)) 处评估函数
  5. 在建议的点评估 (x,y) 对并重复步骤 2-5。

我已经在目标函数 f(x) = x^2 上在 python 中实现了这一点,但该算法未能收敛到最小值。

我怀疑发生这种情况是因为我们一直在最确定的地方进行采样,从而使 l(x) 在这一点附近变得越来越窄,这根本不会改变我们的采样位置。那么我的理解不足在哪里呢?

0 投票
1 回答
201 浏览

python - RandomForest搜索参数中hyperopt的ValueError

我正在尝试使用 hyperopt 查找 RandomForestClassifier 的参数。这是我的代码:

在我运行 ValueError 后立即引发:

你觉得我做错了什么?

0 投票
1 回答
1259 浏览

python - 在高度并行化的 HyperOpt 实例中,为什么 subprocess.Popen/os.system 与 > 和 2> 不起作用?

我需要以非常并行的方式运行 HyperOpt(比如 200 多个工作人员)。工人不到 200 人,一切正常。但是当更多的工人开始工作时,我无法再从目标函数中获得任何程序的输出(我需要)。

我已经尝试过 subprocess.popen() 并且它确实工作得很好,除非有超过 200 名工人。所以我从它切换到 os.system(program + " > " stderr + " 2> " stdout) 然后读取 stderrlog 和 stdoutlog 文件,除非有超过 200 名工人,否则它也可以正常工作。

stderrlog 文件工作得很好。但是 stdoutlog 大部分时间都是空的,或者只得到一些随机行。这些文件存在,但它们只是不完整的。程序似乎没有退出,并且日志中没有任何迹象表明出现任何问题,除了 HyperOpt 没有找到结果。同样,如果我只将 'echo "hello world"' 作为代码(非常短的输出)执行,它就可以工作。

我在 HPC 集群的 SLURM 环境中运行它,但也没有 slurm 错误。

助手.py:

目标函数_mongodb.py:

programs/test/run.sh 产生了几千行代码(它本身又调用了一个 python 脚本),我需要进一步分析这些代码,所以只是在它的输出中搜索 RESULTS 并不能解决问题。

我还尝试将此作为 run_program 的代码(带有额外的日志文件),根据我无法再找到的网站,它声称这将解决 Popen 的缓冲区大小大于 64K 的问题:

在调试日志文件(由 print_to_log 打印)中,只有一行随机行“Adding (out/err)tmp to (out/err), loopnr: " + str(loopnr)" 出现随机行号,但没有其他(之前什么都没有,之后什么都没有。根据日志,该程序永远不会被杀死。

stderr 文件可以工作,但如果有超过 200 个并行工作人员,则 stdout 文件大多为空或仅显示输出中的随机行。

我把标准输出写得很好,特别是在使用 > 和 2> 时。

ulimit -a 给我看

0 投票
1 回答
868 浏览

python - 如何将 KerasClassifier、Hyperopt 和 Sklearn 交叉验证放在一起

我正在使用 sklearn 在 Keras 模型上执行超参数调整优化(hyperopt)任务。我正在尝试使用 Sklearn 交叉验证来优化 KerasClassifiers,一些代码如下:

现在我要做的是使用以下方式将 Hyperopt 参数传递给 KerasClassifier

我将搜索空间定义为:

运行优化

但它没有给出这个错误:

ValueError:激活不是合法参数

正确的方法是什么?

0 投票
0 回答
181 浏览

tensorflow - 带有种子的 Hyperopt 确定性模型 Keras

我正在尝试将 hyperopt 用于带有 keras 的分类深度学习模型:

尽管我认为我投入了所有必要的种子来获得可重复的案例。即使我将 {{choice([...])}} 替换为整数,我也会不断得到不同的结果。

我错过了什么?我应该添加什么来正确播种模型?

提前非常感谢!