Для Keras Tuner build_model и run_trial нужен один и тот же параметр - PullRequest
0 голосов
/ 14 января 2020

У меня есть пример использования, который сложно представить с помощью keras-tuner, и я мог бы воспользоваться некоторыми рекомендациями. Я тренирую модель со слоем Embeddeds. Я хочу тренироваться по разным длинам последовательности, что требует шага предварительной обработки. Я подклассировал KerasTuner следующим образом (для краткости опущено много кода):

class MyTuner(kt.Tuner):
  def run_trial(self, trial):
    hp = trial.hyperparameters
    # ...
    X = keras.preprocessing.sequence.pad_sequences(tokens, 
          maxlen= hp.Int('sequence_length', min_value=100, max_value=200, step=50))
    model = self.hypermodel.build(hp)
    # ...

И я создал функцию модели сборки:

def build_model(hp):
    model = keras.models.Sequential()
    sequence_length = ???
    model.add( keras.layers.Embedding( word_index,
                                       embedding_dim,
                                       input_length=sequence_length,
                                       trainable=False ) )

Моя проблема с получением Параметр sequence_length в функции build_model. Вещи, которые я пробовал:

  • hp.get ('sequence_length'). Это выдает NameError: имя 'word_index' не определено. Похоже, что hp является отдельным при передаче в build_model и run_trial.
  • добавление параметров в build_model. Это также не работает (выбрасывает TypeError: build_model (), пропускающий 1 обязательный позиционный аргумент)

Буду признателен за некоторые рекомендации о том, как структурировать мой код для использования keras-tuner.

...