问题标签 [optuna]
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 - 从最优超参数的字典项创建列表
我正在使用optuna框架为我的预期CNN
网络选择最佳参数,包括层数、层中的过滤器、优化器等。我可以确认我的最佳参数是一个包含以下内容的字典:
然后,我如何形成一个包含层数、退出等的列表study.best_params
,例如:
目标是访问这些值并创建我的网络架构,类似于:
performance - 提高自动编码器网络的性能
几天来,我正在努力提高我的自动编码器网络的性能,从更改网络架构到手动调整一些参数,以及最近使用optuna来优化 hpyerparameters。网络性能没有显着改善。
我可以知道您是否可以提出一些建议来改进此模型?
代码:
创建一个 optuna 研究:
然后用 `study 参数训练模型,如下所示:
不幸的是,尽管做出了所有这些努力,但我的模型性能并没有显着改善。你建议我应该进一步做什么?
xgboost - Suggest_int() 缺少 1 个必需的位置参数:Optuna 上的“高”错误
我有以下 Optuna 代码来为 Xgboost 分类器进行超参数调整。
它不断给我以下错误:
非常感谢
optuna - optuna cmaes 初始值为 x0?
我的代码:
然后输出
为什么算法不按照我给的x0做初值
python - Optuna 从“外部”传递参数字典
我正在使用 Optuna 来优化一些目标函数。我想创建“包装”标准 Optuna 代码的自定义类。
例如,这是我的课(它仍在进行中!):
我试图在这个类中包装 optuna 优化的所有“逻辑”,而不是每次都编写如下代码(来自文档):
我想让我的代码“模块化”并将所有内容合并到一个类中。我的最终目标是根据函数中给定的输入模型设置优化函数的不同“模板” __init__
。
所以,回到主要问题,我想从param
字典之外传递。基本上我希望能够从我的班级之外声明它并在__init__
函数中传递我的字典。
但是,Optuna 代码中常用的范围和分布取决于trial
对象,因此我无法执行以下操作:
是否有任何解决方法或解决方案可以通过这本字典?
python - Optuna ConvergenceWarning 上 Lasso 超参数调整研究
使用 Optuna 微调我的 Lasso 模型时,我得到以下 ConvergenceWarning .. 是否可以增加 nr. 迭代次数?我增加了 n_trials 但没有帮助。
我的代码:
错误/警告:
/opt/conda/lib/python3.7/site-packages/sklearn/linear_model/_coordinate_descent.py:532:ConvergenceWarning:
目标没有收敛。您可能希望增加迭代次数。对偶间隙:0.02194362081235468,公差:0.01627441311545211
python - optuna.integration.lightGBM 自定义优化指标
我正在尝试使用 optuna 优化 lightGBM 模型。
阅读文档后,我注意到可以使用两种方法,如此处所述:LightGBM Tuner: New Optuna Integration for Hyperparameter Optimization。
第一种方法使用 optuna 优化的“标准”方法(目标函数 + 试验),第二种方法将所有内容与.train()
函数包装在一起。第一个基本上尝试超参数值的组合,而第二个则按照超参数的逐步方法进行优化。
这两种方法显示在 optuna github 存储库中的以下代码示例中:
两种代码都对相同的参数执行完全相同的优化(此处描述了第二种方法的优化参数),但方式不同(组合与逐步)。
我的问题是:
第二种方法是否可以指定自定义评估指标?在第一个中,我可以使用任何自定义指标轻松更改 github 示例中使用的准确性。
作为一个例子,我可以写:
此代码将返回使我的自定义指标最大化的 lightGBM 模型的参数。但是,在第二种方法中,我无法指定自己的自定义指标。
更新:
我设法在第二种方法中定义了我自己的自定义指标及其用法。一个最小的可重现代码如下(只需使用train_test_split
scikit 传递数据):
但是 Optuna 似乎无法根据我的自定义指标选择最佳试用版,事实上,我收到以下错误:
[W 2021-05-16 15:56:48,759] 试验 0 由于以下错误而失败:KeyError('custom') Traceback(最近一次调用最后一次):文件“C:\Users\Mattia\anaconda3\envs\rec_sys_challenge \lib\site-packages\optuna_optimize.py”,第 217 行,在 _run_trial value_or_values = func(trial) 文件“C:\Users\Mattia\anaconda3\envs\rec_sys_challenge\lib\site-packages\optuna\integration_lightgbm_tuner\optimize. py”,第 251 行,调用 val_score = self._get_booster_best_score(booster) 文件“C:\Users\Mattia\anaconda3\envs\rec_sys_challenge\lib\site-packages\optuna\integration_lightgbm_tuner\optimize.py”,第 118 行,在_get_booster_best_score val_score = booster.best_score[valid_name][metric] KeyError: 'custom'
这似乎是库的问题(您可以在此处找到更多信息:GitHub 问题),我尝试了许多建议的解决方案,但都没有奏效。
有什么帮助吗?
optuna - “TPESampler”对象没有属性“_group”
今天,当我在 Optuna 2.8.0 上加载Colab后尝试优化它时,我的研究中出现了以下错误。每次试验开始或结束时,我都会使用 joblib 将研究保存在每个试验的单独文件中。我以前从来没有遇到过这个问题,也不知道是什么原因造成的。
Colab 显示以下跟踪:
PS。有趣的是,我的本地机器上似乎不存在这项研究的问题。我使用版本 2.5.0。
machine-learning - 如何将 optuna 的 study.optimize 详细程度设置为 0?
我想将 optuna 的 study.optimize 详细程度设置为 0。我想optuna.logging.set_verbosity(0)
可能会这样做,但我仍然会获得Trial 0 finished with value ....
每次试验的更新
这样做的正确方法是什么?不幸的是,通过文档进行广泛搜索仍然只会导致上述方法。
提前谢谢了