问题标签 [hyperparameters]
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.
tensorflow - Google Cloud ML:如何对超参数调优作业执行纯网格搜索
Google Cloud ML 使用贝叶斯优化来减轻维度灾难。在特定情况下,我有超参数调整作业,我希望在超参数调整作业中对超参数网格进行详尽搜索。我怎样才能做到这一点?
我强制执行纯网格搜索的动机是:我观察到,专门针对 DISCRETE 类型的超参数的超参数调整工作不止一次评估相同的超参数组合,这是我不想要的。我怀疑这与使用贝叶斯优化有关。这就是为什么我想对这些情况强制执行纯网格搜索。
python - Hyperopt:定义搜索空间
我在搜索空间定义的逻辑上遇到问题。
我想搜索这些:
- 要使用的模型类型(features_and_hours、features_only、hours_only、no_features_no_hours)
- 隐藏单元的数量(output_units)
- 核矩阵的正则化(类型 = l1、l2 或 l1l2)
- 内核矩阵的正则化值(从 0.0 到 0.5 的任意值)
- 活动的正则化(类型 = l1、l2 或 l1l2)
- 活动的正则化值(从 0.0 到 0.5)
- 时期数(num_epochs,1、5 或 10)
- 要使用的优化器(adadelta、adam 或 rmsprop)
- 是否以及如何应用注意力(之前、之后或无)
这是我设置的方式,按照这个例子(页面上的第二篇文章,jacobzweig)
我得到的错误是:
但是在示例中,似乎有重复的标签不会引发错误。我究竟做错了什么?
python - Hyperopt 参数空间:TypeError:int() 参数必须是字符串或数字,而不是“应用”
在我更新了几个包(包括 scikit-learn)之前,它运行得很好。现在,下面的代码给了我一个 TypeError。
我正在使用 python 2.7.12、0.1hyperopt
版和sklearn
0.18.1 版。完整追溯:
知道如何将结果转换hp.uniform
为整数吗?
编辑:
假设我hp.randint
改用:
然后:
然后这是输出:
但 hyperopt 的重点是为您提供超参数优化的随机值。当然有一种方法可以从中提取价值吗?
python - 基于概率的 GridSearchCV 超参数调整随机森林分类器
刚开始为随机森林二元分类进行超参数调整,我想知道是否有人知道/可以建议如何将评分设置为基于预测概率而不是预测分类。理想情况下,我想要在下面的概率(即[0.2,0.6,0.7,0.1,0.0])而不是分类(即[0,1,1,0,0] )中考虑 roc_auc 的东西。
我认为目前 roc_auc 正在脱离实际分类。在我开始创建自定义评分功能之前,想检查是否有更有效的方法,在此先感谢您的帮助!
tensorflow - 如何在开始训练之前找到并运行数据集中的最大批次
问题
在 Tensorflow 中,我经常在第一个训练阶段遇到 OOM 错误。然而,网络的庞大性质导致第一个 epoch 需要大约一个小时,对于快速测试新的超参数来说非常长。
理想情况下,我希望能够对迭代器进行排序,这样我就可以get_next()
在最大的批次上运行一次。
我怎样才能做到这一点?或者也许有更好的方法来实现早期失败?
迭代器的格式为:(source, tgt_in, tgt_out, key_weights, source_len, target_len)
我希望按目标长度排序。它在返回之前被填充和批处理。
数据集是一个句子列表,具有相似的长度。我想在迭代器中找到最大的批次并只运行它。
一些代码
如果初始化程序没有每次都对迭代器进行洗牌,则下面的代码将起作用,从而破坏获得的有关最大批次位置的信息。我不太确定如何修改它——一旦使用 读取批次的长度get_next()
,它就已经被“弹出”并且不能再用作模型的输入。
optimization - 预测性维护 - 如何将贝叶斯优化与目标函数和逻辑回归与梯度下降结合使用?
我正在尝试重现arimo.com中显示的问题
这是一个如何为硬盘故障构建预防性维护机器学习模型的示例。我真的不明白的部分是如何将贝叶斯优化与自定义目标函数和逻辑回归与梯度下降一起使用。要优化的超参数是什么?问题的流程是什么?
如我们上一篇文章所述,贝叶斯优化 [6] 用于找到最佳超参数值。在超参数调整中要优化的目标函数是在验证集上测量的以下分数:
S = alpha * fnr + (1 – alpha) * fpr
其中 fpr 和 fnr 是在验证集上获得的假阳性率和假阴性率。我们的目标是保持低误报率,因此我们使用 alpha = 0.2。由于验证集高度不平衡,我们发现 Precision、F1-score 等标准分数效果不佳。事实上,使用这个自定义分数对于模型通常获得良好的性能至关重要。
请注意,我们仅在运行贝叶斯优化时使用上述分数。为了训练逻辑回归模型,我们使用带有通常脊损失函数的梯度下降。
我在功能选择之前的数据框:
scikit-learn - 如何通过 RandomizedSearchCV 使用交叉验证拆分数据
我正在尝试使用 RandomizedSearchCV 将我的模型从单次运行转移到超参数调整。
在我的单次运行案例中,我的数据被拆分为训练/验证/测试数据。
当我使用默认的 3 倍 CV 在我的 train_data 上运行 RandomizedSearchCV 时,我注意到我的 train_input 的长度减少到 train_data 的 66%(这在 3 倍 CV 中是有意义的......)。
所以我猜我应该将我的初始训练集和验证集合并到一个更大的训练集中,并让 RandomizedSearchCV 将其拆分为训练集和验证集。
那是正确的方法吗?
我的问题是:如何访问剩余 33% 的 train_input 以将其提供给我的验证准确性测试函数(请注意,我的 score 函数正在测试集上运行)?
谢谢你的帮助!约安
google-cloud-ml - 在超参数调整 cloud ml-engine 期间获取超参数
我在 cloud ml-engine 上运行超参数调整作业。只有当试验结束时,我才能获得 inJob details
和 in的超参数值Training output
。
我想知道是否有办法在试验运行时获取超参数的值。
编辑:我认为在以编程方式使用tf.gfile
.
python - Python:没有机器学习的网格搜索?
我想优化一个有几个可变参数作为输入的算法。
对于机器学习任务,Sklearn
提供具有gridsearch
功能的超参数优化。
Python 中是否有一种标准化的方式/库,可以优化不限于机器学习主题的超参数?