Что означает параметр max eval в hyperas optim, чтобы минимизировать возврат функции?

Я пытаюсь настроить параметры с помощью Hyperas, но я не могу интерпретировать некоторые детали, касающиеся этого.

Q1) Что делает параметр max_eval в optim.minimize?

Q2) Проходит ли он каждую комбинацию параметров для каждого max_eval и дает ли я лучшие потери, основываясь на лучших параметрах?

Q3) Что если я дам max_eval = 5?

Q4) Что возвращает best_run и best_model после завершения всех max_evals?

Q5) Ниже функции модели я вернул потерю как -test_acc, какое отношение это имеет к параметру настройки и почему мы используем там отрицательный знак?

def model(x_train, y_train, x_test, y_test):    

    dense_units1 = {{choice([64, 126, 256, 512])}}
    activations = {{choice(['relu', 'sigmoid'])}}

    epochs  = 100
    verbose = 0

    model = Sequential([
        # layer 1
        Dense(dense_units1, activations, input_shape=(784,)),
               ....
               ....
               ....

    ])
    # compiling model
    model.compile(optimizers, loss='categorical_crossentropy', metrics=['accuracy'])
    # fitting the model
    result = model.fit(x_train, y_train, validation_split=0.2, batch_size=batch_size, 
                        epochs=epochs, verbose=verbose, callbacks=[ES, MC])

    test_loss, test_acc = model.evaluate(x_test, y_test, batch_size=512)

    return {'loss': -test_acc, 'status': STATUS_OK, 'model': model}

best_run, best_model = optim.minimize(model=model, data=dataset, algo=tpe.suggest, 
                                       max_evals=5, 
                                      trials=Trials(), notebook_name='MNIST', 
                                      verbose=True)

1 ответ

Решение
  1. Параметр max_eval - это просто максимальное количество прогонов оптимизации. (Например, если max_evals = 5, Hyperas выберет другую комбинацию гиперпараметров 5 раз и запустит каждую комбинацию для количества выбранных вами эпох)

  2. Нет, он будет проходить одну комбинацию гиперпараметров для каждого max_eval. Лучшая комбинация гиперпараметров будет после завершения всех оценок, которые вы дали в параметре max_eval.

  3. Ответил в Q1.

  4. В этом случае best_model и best_run вернут одно и то же. Вы должны добавить это в свой код:

    print('Best performing model chosen hyper-parameters:')
    print(best_run)
    

    это напечатает лучшие гиперпараметры из всех выполненных работ.

Другие вопросы по тегам