0

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

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

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

4

1 回答 1

0

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

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(...)
于 2021-11-18T18:01:24.573 回答