什么是 hp.Discrete 和 hp.Realinterval?我可以在 hp.realinterval 中包含更多值而不仅仅是 2 吗?
Posted
技术标签:
【中文标题】什么是 hp.Discrete 和 hp.Realinterval?我可以在 hp.realinterval 中包含更多值而不仅仅是 2 吗?【英文标题】:What are hp.Discrete and hp.Realinterval? Can I include more values in hp.realinterval instead of just 2? 【发布时间】:2019-10-26 19:35:06 【问题描述】:我在 Tensorflow 2.0-beta0 中使用 HParams Dashboard 的超参数,正如此处所建议的 https://www.tensorflow.org/tensorboard/r2/hyperparameter_tuning_with_hparams
我对第 1 步感到困惑,找不到更好的解释。我的问题与以下几行有关:
HP_NUM_UNITS = hp.HParam('num_units', hp.Discrete([16, 32]))
HP_DROPOUT = hp.HParam('dropout', hp.RealInterval(0.1, 0.2))
HP_OPTIMIZER = hp.HParam('optimizer', hp.Discrete(['adam', 'sgd']))
我的问题: 我想尝试更多的 dropout 值,而不仅仅是两个(0.1 和 0.2)。如果我在其中写入更多值,则会引发错误-“最多可以给出 2 个参数”。我试图查找文档,但找不到这些 hp.Discrete 和 hp.RealInterval 函数的来源。 任何帮助,将不胜感激。谢谢!
【问题讨论】:
我还想对相同的文档进行一些澄清。在下面链接的示例中,离散和 RealInterval 的行为方式相同。 tensorflow.org/tensorboard/… 【参考方案1】:好问题。他们的笔记本教程在很多方面都缺乏。无论如何,以下是您在特定分辨率下的操作方式res
for dropout_rate in tf.linspace(
HP_DROPOUT.domain.min_value,
HP_DROPOUT.domain.max_value,
res,):
【讨论】:
【参考方案2】:在我看来,implementation 似乎不是 GridSearch,而是 MonteCarlo/Random 搜索(注意:这不是 100% 正确,请参阅下面的编辑)
因此,在每次迭代中,都会选择该实际区间的随机浮点数
如果您想要 GridSearch 行为,只需使用“离散”即可。这样你甚至可以将 GridSearch 与 Random search 混合搭配,非常酷!
编辑:22 年 7 月 27 日:(基于 @dpoiesz 的评论)
只是为了让它更清楚一点,因为它是从间隔中采样的,所以会返回具体的值。因此,将它们添加到网格维度并使用它们执行网格搜索
【讨论】:
在问题链接的指南中,discrete 和 RealInterval 的行为方式相同。他们的示例执行网格搜索【参考方案3】:RealInterval 是一个最小、最大元组,hparam 将在其中选择一个数字。Here 一个指向实现的链接以便更好地理解。 问题是,由于它目前已实现,除非您调用 sample_uniform 方法,否则两者之间似乎没有任何区别。
【讨论】:
【参考方案4】:请注意,tf.linspace
在保存当前值时会破坏上述示例代码。
见https://github.com/tensorflow/tensorboard/issues/2348
特别是 OscarVanL 对他快速而肮脏的解决方法的评论。
【讨论】:
以上是关于什么是 hp.Discrete 和 hp.Realinterval?我可以在 hp.realinterval 中包含更多值而不仅仅是 2 吗?的主要内容,如果未能解决你的问题,请参考以下文章