hyperas optim中的max eval参数将函数返回值减到最小是什么?

时间:2019-06-25 00:52:09

标签: python tensorflow keras hyperas

我正在尝试使用Hyperas调整参数,但是我无法解释一些细节。

Q1)optim.minimize做的max_eval参数是什么?

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 个答案:

答案 0 :(得分:0)

  1. max_eval参数只是优化运行的最大次数。 (例如,如果max_evals = 5,Hyperas将选择5次不同的超参数组合,并针对您选择的时期数运行每种组合)

  2. 否,对于每个max_eval,它将通过超参数的一种组合。超参数的最佳组合是在完成您在max_eval参数中给出的所有评估之后。

  3. 在第一季度得到答案。

  4. 在这种情况下,best_model和best_run将返回相同的值。您应该将此添加到您的代码中:

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

    这将从所有运行中打印出最佳的超参数。