用于超参数优化的 Tune of Ray 包中的“num_samples”的目的

Posted

技术标签:

【中文标题】用于超参数优化的 Tune of Ray 包中的“num_samples”的目的【英文标题】:purpose of 'num_samples' in Tune of Ray package for hyperprameter optimization 【发布时间】:2019-05-28 13:11:48 【问题描述】:

我正在尝试使用Tune 为 LSTM(纯 Tensorflow)执行超参数优化任务。我在hyperopt 算法上遵循了他们的示例。在示例中,他们在“配置”部分中使用了以下行。

“num_samples”:如果 args.smoke_test 为 10,否则为 1000,

文档没有解释这是什么。我可以确定这是否是一段有用的代码,或者我应该如何为我的场景更改它。所以如果能知道这行代码的意思就好了。

示例hyperopt代码可以通过this link找到

【问题讨论】:

这称为三元表达式 - 它根据其他给定变量将"num_samples" 变量设置为 10 或 1000。从名称中我会它会在 10 或 1000 个点处对一些给定数据进行采样,以创建它所做的任何事情......您需要查看文档以亲自查看。 "num_samples" 作为 kwargs 参数提供。也许在附近的某个地方:ray.readthedocs.io/en/latest/… 【参考方案1】:

你可以找到参数in the documentation of run_experiments

默认情况下,每个随机变量和网格搜索点都采样一次。要获取多个随机样本,请将 num_samples: N 添加到实验配置中。如果 grid_search 作为参数提供,则网格将被重复 num_samples 次。

本质上,该参数是配置的一部分,可用于多次采样数据,而不仅仅是一次。

您的演示代码使用 run_experiment:

config = 
    "my_exp": 
        "run": "exp",
        "num_samples": 10 if args.smoke_test else 1000,
        "config": 
            "iterations": 100,
        ,
        "stop": 
            "timesteps_total": 100
        ,
    

algo = HyperOptSearch(space, max_concurrent=4, reward_attr="neg_mean_loss")
scheduler = AsyncHyperBandScheduler(reward_attr="neg_mean_loss")
run_experiments(config, search_alg=algo, scheduler=scheduler)  # here the config is passed

【讨论】:

谢谢,知道 'args.smoke_test' 应该做什么吗? args.smoke_test 只是我们用来简化运行测试的布尔值。您可以简单地认为该行基本上是"num_samples": 10 @Sul 10 if args.smoke_test else 1000, 是一个三元表达式,表示“如果args.smoke_test 为真,则使用10 否则1000 - 将其视为基于“小”和“大”测试场景提示:如果你在用户名前加上一个@,如果这个人在这个答案/qeustion 中,它会自动为你完成它,并且更重要的是这个人会收到一条消息,有人说某事 - 不知何故你评论躲过了我:)【参考方案2】:

根据文档:

num_samples (int) – 从超参数中采样的次数 空间。默认为 1。如果 grid_search 作为参数提供,则 网格将被重复 num_samples 次。

重复替换:

repeat (int) – 已弃用并将在未来删除 雷的版本。改为使用 num_samples

用法:

"num_samples": 10

num_samples=10

class ray.tune.Experiment(name,run,stop=None,config=None,trial_resources=None,
repeat=1,num_samples=1,local_dir=None,upload_dir=None,checkpoint_freq=0,
checkpoint_at_end=False,max_failures=3,restore=None)

【讨论】:

以上是关于用于超参数优化的 Tune of Ray 包中的“num_samples”的目的的主要内容,如果未能解决你的问题,请参考以下文章

[Ray.Tune]使用心得(待完善)

[Ray.Tune]使用心得(待完善)

如何在 Ray Tune 中定义与搜索算法无关的高维搜索空间?

R语言使用e1071包中的svm函数构建支持向量机SVM模型使用tune.svm函数基于网格搜索(10折交叉验证)对RBF核函数的gamma参数和cost参数进行参数寻优使用最优参数构建最终模型

R语言使用e1071包中的svm函数构建支持向量机SVM模型使用tune.svm函数基于网格搜索(10折交叉验证)对RBF核函数的gamma参数和cost参数进行参数寻优使用最优参数构建最终模型

满足复杂条件时提前停止 ray.tune 实验?