GPflowOpt is a library for Bayesian Optimization with GPflow. It makes use of TensorFlow for computation of acquisition functions, to offer scalability, and avoid implementation of gradients. The package was created, and is currently maintained by Joachim van der Herten and Ivo Couckuyt

The project is open source: if you feel you have some relevant skills and are interested in contributing then please contact us on GitHub by opening an issue or pull request.


  1. Install package

A straightforward way to install GPflowOpt is to clone its repository and run

pip install . --process-dependency-links

in the root folder. This also installs required dependencies including TensorFlow. For alternative TensorFlow installations (e.g., gpu), please see the instructions on the main TensorFlow webpage.

  1. Development

GPflowOpt is a pure python library so you could just add it to your python path. We use

pip  install -e . --process-dependency-links

  1. Testing

For testing, GPflowOpt uses nox to automatically create a virtualenv and install the additional test dependencies. To install nox:

pip install nox-automation

followed by


to run all test sessions.

  1. Documentation

To build the documentation, first install the extra dependencies with pip install -e .[docs]. Then proceed with python build_sphinx.

Getting started

A simple example of Bayesian optimization to get up and running is provided by the first steps into Bayesian optimization notebook

For more advanced use cases have a look at the other tutorial notebooks and the API and architecture.

Citing GPflowOpt

To cite GPflowOpt, please reference the preliminary arXiv paper. Sample Bibtex is given below:

author = {Knudde, Nicolas and {van der Herten}, Joachim and Dhaene, Tom and Couckuyt, Ivo},
title = “{{GP}flow: A {G}aussian process library using {T}ensor{F}low}”,
journal = {arXiv preprint – arXiv:1711.03845},
year = {2017},


Joachim van der Herten and Ivo Couckuyt are Ghent University - imec postdoctoral fellows. Ivo Couckuyt is supported by FWO Vlaanderen.