All notable changes to this project will be documented in this file.
- some code style related changes are applied, such as import sorting and line length shortening.
- refactoring in tests to use pytest parameterisation and fixtures.
- issue with running callables from script thanks to David Turner (#43).
- issue with tensorflow version comparison in the tensorboard reporter.
Reporter
instance can be loaded with data from the database of another reporter using afrom_database()
method.- data from a
Reporter
instance can be exported into aHistoryPoint
list to load into an optimiser. - compiled documentation and logo.
BayesianOptimisation
raisesExhaustedSearchSpaceError
if a discrete domain is exhausted.
- minor fixes in documentation typos, argument names and tests.
Domain
is moved fromhypertunity.optimisation
to thehypertunity
package.- rename
TableReporter
toTable
andTensorboardReporter
toTensorboard
. ExhaustedSearchSpaceError
is moved fromoptimisation.exhastive
tooptimisation.base
module.Trial
running a task from a job is now done with dict as input keyword arguments or named command line arguments.
- bug in
BayesianOptimisation
sample conversion for nested dictionaries. - bug in
BayesianOptimisation
type preserving between the domain and the sample value. - bug in
Tensorboard
reporter for real intervals with integer boundaries. - bug in
Reporter
for not using the default metric name during logging.
Trial
a wrapper class for high-level usage, which runs the optimiser, evaluates the objective by scheduling jobs, updates the optimiser and summarises the results.- a
Job
from a script with command line arguments can now be run with named arguments passed as a dictionary instead of a tuple. - checkpointing of results on disk when calling
log()
or aReporter
object. - optimisation history can now be loaded into an
Optimiser
. Example use-case would be to warm-startBayesianOptimisation
from the history of the quickerRandomSearch
.
- every
Reporter
instance has aprimary_metric
attribute, which is an argument to__init__
.
- validation of
Domain
is not allowing for intervals with more than 2 numbers. - minor bugs in tests.
Optimiser.update()
now accepts evaluation arguments that are float,EvaluationScore
or a dict with metric names and floats orEvaluationScore
s. This is valid for all optimisers.
Job
can now be scheduled locally to run command line scripts with arguments.BayesianOptimisation.run_step
can pass arguments to the backend for better customisation.
- any
Reporter
object can be fed with data from a tuple of aSample
object and a score, which can be a float or anEvaluationScore
. BayesianOptimisation
optimiser can be updated with aSample
and a float orEvaluationScore
objective evaluation types.- a discrete/categorical
Domain
is defined with a set literal instead of a tuple. Job
supports running functions from within a script by specifying 'script_path::func_name'.batch_size
is no more an attribute of anOptimiser
but an argument torun_step
.minimise
is no more an attribute ofBayesianOptimisation
but an argument torun_step
.
Scheduler
to run jobs locally using joblib.SlurmJob
andJob
dataclasses defining the tasks to be scheduled.Result
dataclass encapsulating the results from the tasks.TableReporter
class for reporting results in tabular format.Reporter
base class for extending reporters.
Base
-prefix is removed from all base classes which reside inbase.py
modules.split_by_type
is now a method of theDomain
class.Optimiser
has abatch_size
attribute accessible as a property.
optimisation.bo
package has been removed. Instead a singlebo.py
module supports the only BO backend---GPyOpt, as of now.- prefix for the file encoding (default is utf-8).
TensorboardReporter
result logger usingHParams
.GpyOpt
backend forBayesianOptimisation
.RandomSearch
optimiser.GridSearch
optimiser.Domain
andSample
classes as foundations for the optimisers.