Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_count(session):
# type: (Session) -> None
study_1 = StudyModel(study_id=1, study_name='test-study-1')
study_2 = StudyModel(study_id=2, study_name='test-study-2')
session.add(TrialModel(study_id=study_1.study_id, state=TrialState.COMPLETE))
session.add(TrialModel(study_id=study_1.study_id, state=TrialState.RUNNING))
session.add(TrialModel(study_id=study_2.study_id, state=TrialState.RUNNING))
session.commit()
assert 3 == TrialModel.count(session)
assert 2 == TrialModel.count(session, study=study_1)
assert 1 == TrialModel.count(session, state=TrialState.COMPLETE)
np.zeros((16, 20), np.float32),
np.zeros((16, ), np.int32),
batch_size=1,
epochs=1,
callbacks=[KerasPruningCallback(trial, 'accuracy')],
verbose=0)
return 1.0
study = optuna.create_study(pruner=DeterministicPruner(True))
study.optimize(objective, n_trials=1)
assert study.trials[0].state == optuna.structs.TrialState.PRUNED
study = optuna.create_study(pruner=DeterministicPruner(False))
study.optimize(objective, n_trials=1)
assert study.trials[0].state == optuna.structs.TrialState.COMPLETE
assert study.trials[0].value == 1.0
def test_create_new_trial_with_template_trial(storage_init_func):
# type: (Callable[[], BaseStorage]) -> None
storage = storage_init_func()
now = datetime.now()
template_trial = FrozenTrial(
state=TrialState.COMPLETE,
value=10000,
datetime_start=now,
datetime_complete=now,
params={'x': 0.5},
distributions={'x': UniformDistribution(0, 1)},
user_attrs={'foo': 'bar'},
system_attrs={
'baz': 123,
'_number': 55 # This entry is ignored.
},
intermediate_values={1: 10, 2: 100, 3: 1000},
number=-1, # dummy value (unused).
trial_id=-1, # dummy value (unused).
)
'objective': 'binary:logistic'
},
dtrain,
1,
evals=[(dtest, 'validation')],
verbose_eval=False,
callbacks=[pruning_callback])
return 1.0
study = optuna.create_study(pruner=DeterministicPruner(True))
study.optimize(objective, n_trials=1)
assert study.trials[0].state == optuna.structs.TrialState.PRUNED
study = optuna.create_study(pruner=DeterministicPruner(False))
study.optimize(objective, n_trials=1)
assert study.trials[0].state == optuna.structs.TrialState.COMPLETE
assert study.trials[0].value == 1.
batch_size=BATCHSIZE,
callbacks=[KerasPruningCallback(trial, 'val_acc')],
epochs=EPOCHS,
validation_data=(x_test, y_test),
verbose=1)
# Evaluate the model accuracy on the test set.
score = model.evaluate(x_test, y_test, verbose=0)
return score[1]
if __name__ == '__main__':
study = optuna.create_study(direction='maximize', pruner=optuna.pruners.MedianPruner())
study.optimize(objective, n_trials=100)
pruned_trials = [t for t in study.trials if t.state == optuna.structs.TrialState.PRUNED]
complete_trials = [t for t in study.trials if t.state == optuna.structs.TrialState.COMPLETE]
print('Study statistics: ')
print(' Number of finished trials: ', len(study.trials))
print(' Number of pruned trials: ', len(pruned_trials))
print(' Number of complete trials: ', len(complete_trials))
print('Best trial:')
trial = study.best_trial
print(' Value: ', trial.value)
print(' Params: ')
for key, value in trial.params.items():
print(' {}: {}'.format(key, value))
def prune(self, study, trial):
# type: (Study, structs.FrozenTrial) -> bool
"""Please consult the documentation for :func:`BasePruner.prune`."""
all_trials = study.trials
n_trials = len([t for t in all_trials
if t.state == structs.TrialState.COMPLETE])
if n_trials == 0:
return False
if n_trials < self._n_startup_trials:
return False
step = trial.last_step
if step is None:
return False
n_warmup_steps = self._n_warmup_steps
if step <= n_warmup_steps:
return False
if not _is_first_in_interval_step(
# type: (BaseStudy) -> Dict[str, BaseDistribution]
"""Return the intersection search space of the :class:`~optuna.study.BaseStudy`.
Intersection search space contains the intersection of parameter distributions that have been
suggested in the completed trials of the study so far.
If there are multiple parameters that have the same name but different distributions,
neither is included in the resulting search space
(i.e., the parameters with dynamic value ranges are excluded).
Returns:
A dictionary containing the parameter names and parameter's distributions.
"""
search_space = None
for trial in study.trials:
if trial.state != optuna.structs.TrialState.COMPLETE:
continue
if search_space is None:
search_space = trial.distributions
continue
delete_list = []
for param_name, param_distribution in search_space.items():
if param_name not in trial.distributions:
delete_list.append(param_name)
elif trial.distributions[param_name] != param_distribution:
delete_list.append(param_name)
for param_name in delete_list:
del search_space[param_name]
def _get_optimization_history_plot(study):
# type: (Study) -> go.Figure
layout = go.Layout(
title='Optimization History Plot',
xaxis={'title': '#Trials'},
yaxis={'title': 'Objective Value'},
)
trials = [t for t in study.trials if t.state == TrialState.COMPLETE]
if len(trials) == 0:
logger.warning('Study instance does not contain trials.')
return go.Figure(data=[], layout=layout)
best_values = [float('inf')] if study.direction == StudyDirection.MINIMIZE else [-float('inf')]
comp = min if study.direction == StudyDirection.MINIMIZE else max
for trial in trials:
trial_value = trial.value
assert trial_value is not None # For mypy
best_values.append(comp(best_values[-1], trial_value))
best_values.pop(0)
traces = [
go.Scatter(x=[t.number for t in trials], y=[t.value for t in trials],
mode='markers', name='Objective Value'),
go.Scatter(x=[t.number for t in trials], y=best_values, name='Best Value')
study = optuna.load_study(study_name, storage_url, pruner=optuna.pruners.MedianPruner())
comm = chainermn.create_communicator('naive')
if comm.rank == 0:
print('Study name:', study_name)
print('Storage URL:', storage_url)
print('Number of nodes:', comm.size)
# Run optimization!
chainermn_study = optuna.integration.ChainerMNStudy(study, comm)
chainermn_study.optimize(objective, n_trials=25)
if comm.rank == 0:
pruned_trials = [t for t in study.trials if t.state == optuna.structs.TrialState.PRUNED]
complete_trials = \
[t for t in study.trials if t.state == optuna.structs.TrialState.COMPLETE]
print('Study statistics: ')
print(' Number of finished trials: ', len(study.trials))
print(' Number of pruned trials: ', len(pruned_trials))
print(' Number of complete trials: ', len(complete_trials))
print('Best trial:')
trial = study.best_trial
print(' Value: ', trial.value)
print(' Params: ')
for key, value in trial.params.items():
print(' {}: {}'.format(key, value))