【问题标题】:What are hp.Discrete and hp.Realinterval? Can I include more values in hp.realinterval instead of just 2?什么是 hp.Discrete 和 hp.Realinterval?我可以在 hp.realinterval 中包含更多值而不仅仅是 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/…

标签: tensorboard hyperparameters tensorflow2.0


【解决方案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 对他快速而肮脏的解决方法的评论。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-23
        • 2011-04-08
        • 2012-05-04
        相关资源
        最近更新 更多