Как обработать Hyperopt AssertionError в adaptive_parzen_normal? - PullRequest
0 голосов
/ 30 января 2019

Я использую hyperopt для поиска в пространстве, чтобы помочь настроить гиперпараметры нейронной сети.Я искал пространство:

space = {
    'latent_dim1': hp.qloguniform('latent_dim1', np.log(30), np.log(70), 1),

    'batch_size': hp.choice('batch_size', [32, 64, 128]),

    'epochs': hp.choice('epochs', [150, 200, 250, 300]),

    'optimiser': hp.choice('optimizer', ['adam', 'rmsprop', COCOB()]),
    'learning_rates': hp.loguniform('learning_rates', np.log(0.1), np.log(0.001)),

    'loss': hp.choice('loss', ['mean_absolute_error', diff_smape]),

    'window': hp.choice('window', [True, False]),
    'window_size': hp.quniform('window_size', 13, 104, 1),

    'teacher_forcing': hp.choice('teacher_forcing', [True, False])
}

При поиске в этом пространстве после десяти-двадцати итераций пробела я получаю следующую ошибку:

Traceback (most recent call last):
  File "hyperparam_gru.py", line 159, in <module>
    best = fmin(seq2seq_model_gru, space, algo=tpe.suggest, max_evals=100, trials=trials)
  File "/lib/python3.6/site-packages/hyperopt/fmin.py", line 367, in fmin
    return_argmin=return_argmin,
  File "/lib/python3.6/site-packages/hyperopt/base.py", line 635, in fmin
    return_argmin=return_argmin)
  File "/lib/python3.6/site-packages/hyperopt/fmin.py", line 385, in fmin
    rval.exhaust()
  File "/lib/python3.6/site-packages/hyperopt/fmin.py", line 244, in exhaust
    self.run(self.max_evals - n_done, block_until_done=self.asynchronous)
  File "/lib/python3.6/site-packages/hyperopt/fmin.py", line 202, in run
    self.rstate.randint(2 ** 31 - 1))
  File "/lib/python3.6/site-packages/hyperopt/tpe.py", line 901, in suggest
    print_node_on_error=False)
  File "/lib/python3.6/site-packages/hyperopt/pyll/base.py", line 913, in rec_eval
    rval = scope._impls[node.name](*args, **kwargs)
  File "/lib/python3.6/site-packages/hyperopt/tpe.py", line 466, in adaptive_parzen_normal
    assert prior_sigma > 0
AssertionError

Мне удалось выполнить поискштраф за менее выразительный пробел (и над другими пробелами):

space= {
    'latent_dim1': hp.choice('latent_dim1', [30, 50, 70, 90]),

    'batch_size': hp.choice('batch_size', [16, 32, 64, 128, 256, 512]),

    'epochs': hp.choice('epochs', [100, 150, 200, 250]),

    'optimiser': hp.choice('optimizer', ['adadelta', 'adam', 'rmsprop', COCOB()]),
    'learning_rates': hp.choice('learning_rates', [0.1, 0.01, 0.001]),

    'loss': hp.choice('loss', ['mean_absolute_error', diff_smape]),

    'window': hp.choice('window', [True, False]),
    'window_size': hp.choice('window_size', [13, 26, 39, 52, 78, 104]),

    'teacher_forcing': hp.choice('teacher_forcing', [True, False])
}

Я не уверен, как обработать ошибку?В идеале я хотел бы просто опустить любую комбинацию гиперпараметров, вызывающую проблему, и просто перейти к следующей комбинации, чтобы попробовать.На данный момент, однако, ошибка просто завершает программу.

...