Python 张量流模型的超参数整定

Python 张量流模型的超参数整定,python,tensorflow,convolution,hyperparameters,Python,Tensorflow,Convolution,Hyperparameters,我以前使用过Scikit learn的GridSearchCV来优化模型的超参数,但我只是想知道是否存在类似的工具来优化Tensorflow的超参数(例如纪元数、学习率、滑动窗口大小等)。) 如果没有,我如何实现一个代码段来有效地运行所有不同的组合?即使它似乎没有明确记录(在版本1.2中),该包(包含在TensorFlow中)定义了应该与scikit learn兼容的分类器。。。但是,现在来看,似乎需要显式设置环境变量TENSORFLOW_SKLEARN(例如to“1”)才能真正获得这种兼容性。

我以前使用过Scikit learn的GridSearchCV来优化模型的超参数,但我只是想知道是否存在类似的工具来优化Tensorflow的超参数(例如纪元数、学习率、滑动窗口大小等)。


如果没有,我如何实现一个代码段来有效地运行所有不同的组合?

即使它似乎没有明确记录(在版本1.2中),该包(包含在TensorFlow中)定义了应该与scikit learn兼容的分类器。。。但是,现在来看,似乎需要显式设置环境变量
TENSORFLOW_SKLEARN
(例如to
“1”
)才能真正获得这种兼容性。如果这样做有效,您已经可以使用
GridSearchCV
()

这就是说,有几种选择。我不知道TensorFlow有什么特别的功能,但是,或者应该都是有效的选项。看起来过去是不错的选择,但现在似乎不太坚持了

或者,你可以研究一个服务,比如(MOE的原始作者创建的一家公司)

编辑

关于运行所有可能的参数组合,如果您想自己实现,那么核心逻辑并不复杂。您可以只定义包含每个参数可能值的列表,然后使用运行所有组合。比如:

from itertools import product

param1_values = [...]
param2_values = [...]
param3_values = [...]
for param1, param2, param3 in product(param1_values, param2_values param3_values):
    run_experiment(param1, param2, param3)
但是请注意,在许多情况下,网格搜索的运行成本可能会高得令人望而却步,即使只是在参数空间中进行随机搜索也可能更高效(更多信息)。

使用Tensorflow进行网格搜索的另一个可行(且有文档记录的)选项是。它是一个可扩展的超参数调优框架,特别是用于深度学习/强化学习

你可以试试

它还负责Tensorboard日志记录和大约10行Python中的高效搜索算法(即,集成和)

from ray import tune

def train_tf_model(config):  
    for i in range(num_epochs):
        accuracy = train_one_epoch(model)
        tune.report(acc=accuracy)

tune.run(train_tf_model,
         config={
            "alpha": tune.grid_search([0.2, 0.4, 0.6]),
            "beta": tune.grid_search([1, 2]),
         })
(免责声明:我积极参与该项目!)