【问题标题】:Can keras_tuner (Keras Tuner) be used for non model hyper parameters?keras_tuner(Keras Tuner)可以用于非模型超参数吗?
【发布时间】:2021-11-12 16:40:38
【问题描述】:

查看文档和教程后,在我看来,为您的模型定义超参数非常容易。这包括从层构建它的代码,以及编译相关的代码,例如学习率。我正在寻找的(也)是一种对非模型相关参数运行超参数搜索的方法。以下是一些示例:

  1. 数据增强。如果您将其构建为 tf 数据集管道的一部分。例如随机翻译量
  2. 过采样/欠采样。这通常用于处理不平衡的类,其中一种方法是 tf.data.Dataset.sample_from_datasets。此方法的“权重”参数是超参数。
  3. 历元数。也许我错过了这个,但它应该以最直接的方式在 keras_tuner 中考虑。一种解决方法是使用调度回调并在编译中实现这一点

所有这些都缺少调谐器库框架吗?这些似乎是您喜欢调整的常见内容。

【问题讨论】:

    标签: python tensorflow2.0 keras-tuner


    【解决方案1】:

    这会有所帮助。 https://keras.io/guides/keras_tuner/custom_tuner/ 自定义调谐器可以是“超参数化” tf 数据集管道的方式。这是我使用的代码 sn-p,它可以工作。

    class MyTuner(kt.BayesianOptimization):
      def run_trial(self, trial, train_ds, *args, **kwargs):
     
        hp = trial.hyperparameters
    
        train_ds = train_ds.shuffle(batch_size * 8).repeat().batch(batch_size).prefetch(buffer_size=AUTO)
    
        hp_constract_factor = hp.Float('contrast_factor', min_value=0.01, max_value=0.2, sampling='log')
    
    
        random_flip = tf.keras.layers.experimental.preprocessing.RandomFlip('horizontal')
        random_contrast = tf.keras.layers.experimental.preprocessing.RandomContrast(hp_constract_factor)
    
    
        train_ds = train_ds.map(lambda x, y: (random_flip(x, training=True), y), num_parallel_calls=AUTO)
        train_ds = train_ds.map(lambda x, y: (random_contrast(x, training=True), y), num_parallel_calls=AUTO)
    
        return super(MyTuner, self).run_trial(trial, train_ds, *args, **kwargs)
    
    tuner = MyTuner(
      model_builder,
      objective='val_sparse_categorical_accuracy',
      max_trials=50,
      executions_per_trial=1,
      directory='keras_tuner',
      project_name='classifier_data_aug_custom_tuner'
    )
    
    tuner.search(...)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-24
      • 2020-12-25
      • 2021-07-18
      • 1970-01-01
      • 2022-09-28
      • 1970-01-01
      • 2023-01-31
      • 2019-09-23
      相关资源
      最近更新 更多