Как я могу передать параметры Hyperopt в KerasClassifier, если я установил условное пространство поиска - PullRequest
0 голосов
/ 02 июля 2019

Благодаря хорошему ответу в моем последнем посте ( Как соединить перекрестную проверку KerasClassifier, Hyperopt и Sklearn ), это очень помогает.

У меня есть еще вопросы:

если я задаю условное пространство поиска, например:

second_layer_search_space = \
  hp.choice('second_layer',
    [
      {
        'include': False,
      },
      {
        'include': True,
        'layer_size': hp.choice('layer_size', np.arange(5, 26, 5)),
      }

    ])

space = {
    'second_layer': second_layer_search_space,
    'units1': hp.choice('units1', [12, 64]),
    'dropout': hp.choice('dropout1', [0.25, 0.5]),
    'batch_size': hp.choice('batch_size', [10, 20]),
    'epochs': hp.choice('nb_epochs', [2, 3]),
    'activation': 'relu'
}

Как я могу сделать гиперпараметр в качестве входных параметров для функции create_model?

Я придумаю решениеэто, но не знаю, было ли это правильным

def create_model(units1, activation, dropout, second_layer):
    model = Sequential()
    model.add(
        Dense(units1,
              input_dim=X.shape[1],
              kernel_initializer="glorot_uniform",
              activation=activation))

    if second_layer['include']:
        model.add(Dense(units=second_layer['layer_size'], activation='relu'))

    model.add(Dropout(dropout))
    model.add(Dense(1, activation='sigmoid'))

    model.compile(loss='binary_crossentropy',
                  optimizer='adam',
                  metrics=['accuracy'])

    return model
...