问题标签 [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.

0 投票
1 回答
743 浏览

python - OptKeras (Keras Optuna Wrapper) - 在我自己的类中使用 optkeras,AttributeError: type object 'FrozenTrial' has no attribute '_field_types'

我编写了一个简单的 Keras 代码,其中我使用 CNN 来处理时尚 mnist 数据集。一切都很好。我实现了自己的类,分类没问题。

但是,我想使用 Optuna,作为 OptKeras(Keras 的 Optuna 包装器),您可以在此处查看示例:https ://medium.com/@Minyus86/optkeras-112bcc34ec73 。

但是,我的代码有问题。当我尝试在自己的班级中使用 optKeras 时。这是代码:(普通run方法有效,但optuna_run给出错误:AttributeError: type object 'FrozenTrial' has no attribute '_field_types'.

代码也可以在这里找到:https ://colab.research.google.com/drive/1uibWa80BdjatA5Kcw27eMUsS7SmwxaDk?usp=sharing 。

完整的错误信息:

0 投票
2 回答
245 浏览

python - 在 PyCharm 上使用 Optuna 运行研究优化时获得 SIGKILL

我正在尝试使用带有默认采样器和中值修剪器的优化功能进行研究。每次运行都会崩溃,有时在 1 次成功试用后有时没有完成任何尝试。崩溃消息是:进程以退出代码 137 完成(被信号 9 中断:SIGKILL)

预期行为

进行研究

环境

  • Optuna 版本:2.0.0
  • Python版本:3.8
  • 操作系统:带 debian 10 VM 的 QubeOS
  • (可选)其他库及其版本:Pytorch '1.5.0+cpu'

错误消息、堆栈跟踪或日志

进程以退出代码 137 结束(被信号 9:SIGKILL 中断)

是什么导致这样的错误?

0 投票
0 回答
309 浏览

python - 尝试在优化回调中保存 Optuna.Study 时出现 TypeError

我正在运行一些 Optuna 研究,当我尝试使用 保存它时joblib.dump,我得到以下信息:

TypeError:无法腌制“_io.TextIOWrapper”对象

我也尝试过pickle.dump(study, open('name.pkl', 'wb')),但在这两种情况下我都得到了相同的结果编辑:现在我明白这与我在回调中这样做的事实有关,否则它可以工作我正在训练自定义 PyTorch 模型,其他一切似乎在研究本身方面起作用..但是当我尝试保存它时,我得到了上述错误。我对如何调试它一无所知。

环境:

  • 带有 debian 10 虚拟机的 QubeOS
  • 蟒蛇 3.8
  • PyTorch 1.5
  • Optuna 2.0 编辑:这是堆栈跟踪:
0 投票
1 回答
2239 浏览

pytorch - 如何通过 Pytorch 和 Optuna 进行交叉验证

我想对官方 Optuna 和基于 pytorch 的示例代码(https://github.com/optuna/optuna/blob/master/examples/pytorch_simple.py)使用交叉验证。

考虑过拆分数据进行交叉验证,并尝试对每个折叠进行参数调整,但似乎无法获得每个参数的平均准确度,因为在 study.trials_dataframe() 中可以检查的参数每次都不同。

0 投票
1 回答
214 浏览

python - TPE(来自 Optuna)是否考虑试验次数?

我正在使用 optuna 的 TPE 采样器来优化深度学习视觉模型的超参数。我想知道 optuna 是否根据试验次数调整搜索。

如果我训练 1000 次试验并停在 500 次,我可以看到很多参数没有被算法尝试。如果我减少 n_trials,TPE 的探索速度会更快(而且精度更低)吗?换句话说,在 500 处使用 n_step=1000 中断 optuna 与使用 n_trials = 500 并等到结束相同。

我对 TPE 的工作原理只有基本的了解。

谢谢。

0 投票
0 回答
82 浏览

python - 使用 Optuna 进行超参数调整的 CoNLL 文件

我一直在尝试研究如何优化 Bi-LSTM 模型中的超参数以进行 PoS 和依赖解析(https://github.com/datquocnguyen/jPTDP)。该模型将 CoNLL-U 文件作为输入,我不知道如何将它们与 Optuna 一起使用。

超参数在模型中定义如下:

现在,我尝试编写一个单独的脚本进行优化,但我真的不知道它是如何读取 CoNLL-U 文件的!这是我的暂定(非工作)代码(其中 jPTDP 是模型的名称):

非常感谢任何帮助!

0 投票
1 回答
1451 浏览

python - 使用 optuna LightGBMTunerCV 作为 optuna 进一步搜索的起点

我正在尝试将 LightGBM 用于回归问题(平均绝对误差/L1 - 或类似 Huber 或 pseud-Huber - 损失),我主要想调整我的超参数。LightGBMTunerCVinoptuna提供了一个很好的起点,但之后我想更深入地搜索(不会丢失自动调谐器学到的东西)。此外,我想使用平均交叉验证分数 + 交叉验证分数的标准差作为我对模型进行排名的指标(即,我认为较低的 SD 是对来自相同的未见数据的更稳定性能的好兆头分配)。

我做了这样的事情:

现在我想做一个考虑到这些结果的进一步搜索。如果我没有以前的结果,我可能会这样做:

我有点不清楚如何将以前的结果添加到研究中。不定义一项新研究可能会解决这个问题,但它看起来像LightGBMTunerCV使用平均分数(不是平均值 + stdv)并且没有办法轻松改变它?可以以某种方式对研究中的试验进行后处理以添加标准差吗?

我什至还没有看到一个明确的例子,说明如何使用FixedTrial强制研究重新运行最佳调整参数(即使我理解这应该是可能的),这可能是另一种方法。

0 投票
0 回答
123 浏览

keras - 联合优化自动编码器和全连接网络进行分类

我有一大组未标记的数据和一组较小的标记数据。因此,我想首先在未标记的数据上训练一个变分自动编码器,然后使用编码器对标记的数据进行三类(附加全连接层)的分类。为了优化超参数,我想使用 Optuna。

一种可能性是首先优化自动编码器,然后优化全连接网络(分类),但随后自动编码器可能会学习到对分类没有意义的编码。

是否有可能联合优化自编码器和全连接网络?

我的自动编码器如下所示(params 只是一个保存参数的字典):

我连接到编码器的全连接网络如下所示:

0 投票
0 回答
1459 浏览

pytorch - pytorch 中的超参数优化(目前使用 sklearn GridSearchCV)

我使用这个(链接)pytorch 教程并希望在其中添加网格搜索功能,sklearn.model_selection.GridSearchCV(链接),以优化超参数。我很难理解 gs.fit(x,y) 中的 X 和 Y 应该是什么;根据文档(链接) x 和 y 应该具有以下结构,但我无法弄清楚如何从代码中获取这些。PennFudanDataset 类的输出以不符合 X、YI 需要的形式返回 img 和 target。n_samples、n_features 是否在以下代码块中或在教程的关于模型的块中?

参数

有没有其他我们可以使用的东西来代替这个特定的教程更容易实现?我读过有关 ray tune( link )、optuna( link ) 等的信息,但它们似乎比这更复杂。我目前也在研究 scipy.optimize.brute( link ),这似乎更简单。

PennFundanDataset 类:

0 投票
2 回答
541 浏览

memory-leaks - Optuna - 内存问题

我正在尝试在 Optuna 优化运行之间释放内存。我正在使用 python 3.8 和最新版本的 Optuna。发生的情况是我运行命令:optuna.create_study(),然后我在循环中调用 optuna.optimize(...),每次都有一个新的目标函数。当我监视我的内存使用情况时,每次调用命令 optuna.create_study() 时,内存使用量都会不断增加,以至于我的处理器最终会杀死程序。只是为了更清晰的画面,第一次运行会占用 3% 以上的内存,最终会增加到 >80%。关于如何在连续调用 create_study() 之间从内存中删除研究的任何想法?