У меня есть пример использования, который сложно представить с помощью 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.