sort by:
Revision Author Date Message Commit Date
31dbbe5 Merge pull request #1506 from GPflow/develop Release 2.0.5 11 June 2020, 14:37 UTC
3669d13 bump version to 2.0.5 (#1504) 11 June 2020, 13:18 UTC
7db2276 fix type in Parameter type check (#1500) 11 June 2020, 10:59 UTC
a9e125e Ensure the plots appear in the generated documentation. (#1503) 11 June 2020, 09:05 UTC
390e4f0 Update link to distill article on GPs (#1498) Note that this links to a *different* article from the previous one - we will add the old link back in as well once it is back online. 10 June 2020, 12:55 UTC
77eacca Supporting preslicing of multi-output combination kernels (#1495) 04 June 2020, 16:03 UTC
6fda0e9 improve NaturalGradient optimizer documentation and add shape checks (#1489) As discussed in #878, GPflow's NaturalGradient optimizer does not implement the diagonal covariance parametrization (`q_diag=True`). This PR clarifies this in the documentation and adds extra shape checks. 04 June 2020, 14:24 UTC
647ca90 Corrected variables name in convolutional notebook for better understanding (#1492) 02 June 2020, 15:09 UTC
12243a6 clean up Scipy types & code (#1454) Doc improvement: Fixes some typos in the Scipy docstring and adds a note on scipy minimize()'s callback argument vs GPflow Scipy().minimize()'s step_callback. Cleans up types in the module. Backwards-incompatible change: the `step_callback` that can be passes to the Scipy.minimize() method is changed to take its arguments by position, not name; in line with the StepCallback type signature (and in line with Python's typing.Callable documentation which suggests that callbacks should take arguments preferentially by position, not name). 02 June 2020, 12:16 UTC
89af61e quickfix to enable GPR to be used with variable data (#1490) GPR used the X.shape attribute instead of calling tf.shape(X); this prevented using it with Variable data, which is now successfully demonstrated in a test. 01 June 2020, 16:12 UTC
d0c78d0 Allow users to pass an iterable to set_trainable (#1486) 28 May 2020, 16:04 UTC
3ed381c Improve (#1488) * bring up to date (resolves #1474) Co-authored-by: joelberkeley-pio <> 28 May 2020, 12:25 UTC
d12be33 add type hints: inducing_variables (#1487) 27 May 2020, 19:30 UTC
1929a36 Makefile quickfix (#1482) Fixes a syntax error in the Makefile introduced by #1471. Also adds a `format-check` target for black --check and a `check-all` target that runs format-check, type-check and the pytest tests. 27 May 2020, 16:39 UTC
435a7ff Merge pull request #1481 from GPflow/develop Release 2.0.4 20 May 2020, 13:59 UTC
f8676eb bump version to 2.0.4 (#1478) 20 May 2020, 12:19 UTC
a198764 enable mypy on CI (#1471) 19 May 2020, 13:50 UTC
61f8d84 Fix freeze and traverse utility methods (#1476) TensorFlow Probability 0.10 introduced a new _parameters attribute in tfp.bijectors.Bijector instances that contains a self-reference, which broke GPflow's module-traversion utilities (leaf_components, print_summary, deepcopy, freeze). This PR changes traverse_module to ignore the _parameters attribute and proposes a new deepcopy approach that simply uses copy.deepcopy()'s memo argument. Co-authored-by: st-- <> 18 May 2020, 20:58 UTC
150a0d1 add type hints to gpflow.base (#1427) 14 May 2020, 13:37 UTC
bf35d66 Merge pull request #1468 from GPflow/vincent/master_203 Sync develop with master 2.0.3 13 May 2020, 09:28 UTC
56c2efe Merge remote-tracking branch 'origin/develop' into vincent/master_203 13 May 2020, 09:05 UTC
a4bfbe6 Add ipynb to gitignore (#1466) * Add ipynb to gitignore 13 May 2020, 07:58 UTC
b83f124 Merge branch 'develop' 13 May 2020, 07:49 UTC
49ffbcf Merge branch 'master' into develop 13 May 2020, 07:48 UTC
00d2e66 bump version to 2.0.3 (#1464) 12 May 2020, 17:21 UTC
7560936 Update for tensorflow 2(.2) (#1460) 12 May 2020, 12:44 UTC
5e599fb Release 2.0.2 (#1459) * add long_description and project_urls to (#1438) * add type hints for probability distributions (#1421) * remove comment (#1441) * Use a type alias in the fnction signature of leading_transpose (#1442) * refactor natgrads to be more efficient (#1443) * Fix dimensions of kernel evaluation of changepoint kernel (#1446) * Removed unusued imports. (#1450) * Improve representation of GPflow objects in IPython/Jupyter notebook (#1453) * includes the repr() string in IPython/Jupyter notebook representation as well (i.e. fully-qualified class name and object hash (memory address), which helps distinguish objects from each other) * only displays the parameter table when it is not empty * makes use of default_summary_fmt() for IPython shell * Convert data structures to tensor in model init method (#1452) * Use a boolean for full covariance in sample_mvn. (#1448) * #1452 for GPMC model (#1458) * release candidate v2.0.2 (#1457) Co-authored-by: st-- <> Co-authored-by: joelberkeley-pio <> Co-authored-by: John Mcleod <> Co-authored-by: Mark van der Wilk <> Co-authored-by: Artem Artemev <> 07 May 2020, 15:01 UTC
6ce4203 release candidate v2.0.2 (#1457) 07 May 2020, 14:45 UTC
8f06b7c #1452 for GPMC model (#1458) 07 May 2020, 14:24 UTC
39d563c Use a boolean for full covariance in sample_mvn. (#1448) 07 May 2020, 13:00 UTC
7e3e514 Convert data structures to tensor in model init method (#1452) Resolves #1439 07 May 2020, 12:22 UTC
5ec7e91 Improve representation of GPflow objects in IPython/Jupyter notebook (#1453) * includes the repr() string in IPython/Jupyter notebook representation as well (i.e. fully-qualified class name and object hash (memory address), which helps distinguish objects from each other) * only displays the parameter table when it is not empty * makes use of default_summary_fmt() for IPython shell 04 May 2020, 13:13 UTC
08739ce Removed unusued imports. (#1450) 02 May 2020, 18:11 UTC
8b24183 Fix dimensions of kernel evaluation of changepoint kernel (#1446) Closes #1440 26 April 2020, 21:36 UTC
b41d4f3 refactor natgrads to be more efficient (#1443) Previously, GPflow's NaturalGradient optimizer would call the loss_function once for each (q_mu, q_sqrt) set in the var_list. This is a light refactor that separates out applying the natural gradient step from computing the gradients (`_natgrad_apply_gradients`), and changes `_natgrad_steps` to only evaluate the loss function once, computing the gradients for all (q_mu, q_sqrt) tuples passed in the var_list. Other changes: - The no-longer-used `_natgrad_step` method got removed. - NaturalGradient now takes a `xi_transform` argument that is used for all parameter sets without explicitly specified xi transform (i.e. tuples rather than triplets). - XiTransform has been changed to have staticmethods. None of this should affect any downstream code; this PR is backwards-compatible. 23 April 2020, 18:17 UTC
c7550ce Use a type alias in the function signature of leading_transpose (#1442) Ensure that the `leading_transpose` function can be used with the @tf.function decorator (workaround for bug in tensorflow<=2.2.0rc3) 23 April 2020, 09:19 UTC
82f2db4 remove comment (#1441) 20 April 2020, 22:03 UTC
e1a3fa3 add type hints for probability distributions (#1421) 20 April 2020, 09:38 UTC
ca3b854 add long_description and project_urls to (#1438) 20 April 2020, 07:43 UTC
2358539 Release 2.0.1 (#1436) Release notes: - Improve structure of likelihoods subdirectory (#1416) - Update (#1401) and GPflow 2 upgrade guide (#1414) - Improved handling of invalid values for constrained Parameters (#1408) - Improvements on types/function annotations (#1406, #1420) - Documentation improvements (metalearning with GPs: #1382, coregionalization notebook: #1402, MCMC notebook: #1410, intro to gpflow with tensorflow 2: #1413) - Minor documentation fixes (#1429, #1430, #1433) - Fix: move matplotlib import inside ImageToTensorBoard (#1399) - Fix: tf.function compilation of ndiagquad (#1418) - Fix: cache tensorboard file writers and re-use them (#1424) 15 April 2020, 12:19 UTC
3fc050d Merge master (at 2.0.0) into develop (pull request #1437) 15 April 2020, 11:33 UTC
641b8ad Merge branch 'develop' of into develop-master-merge 15 April 2020, 10:48 UTC
8afd2f9 Merge remote-tracking branch 'origin/master' into develop-master-merge 15 April 2020, 10:37 UTC
a6156e8 bump version to 2.0.1 (#1426) 15 April 2020, 10:14 UTC
2018243 fix kernel construction in multioutput notebook (#1430) * fix kernel construction in multioutput notebook * fix one more kernel in changepoints notebook 15 April 2020, 10:14 UTC
3fd78aa fix issue template (#1432) The "other issue" template wasn't being pulled in by GitHub's "new issue chooser"( because of a parsing failure due to the use of quotes in the name: field, which is fixed by this PR (changed version obtained by putting the text with quotes into GitHub's "create an issue template" interface). Includes a few minor copyedits. 14 April 2020, 16:57 UTC
5a5603d fix pyplot import in notebooks (#1433) * fix pyplot import for matplotlib 3.1.3 (closes #1423) * apply same fix to other notebooks 14 April 2020, 16:56 UTC
4821d03 Issue templates (#1425) This gives the GPflow repository four issue templates: * bugs (including performance and build issues) * feature requests * documentation issues * other issues (pointing to the stackoverflow gpflow tag) This will hopefully make new issues more easily addressable. :) Co-authored-by: joelberkeley-pio <> 14 April 2020, 14:59 UTC
806004d fix link in sphinx intro.rst (#1429) Closes #1428. 14 April 2020, 12:57 UTC
12dafe9 move matplotlib import inside ImageToTensorBoard (#1399) * move matplotlib import inside ImageToTensorBoard class so that it is not a hard dependency for GPflow (`import gpflow` does not require matplotlib, only instantiating `ImageToTensorBoard` does) * split up monitor into and * add matplotlib to extras_require 14 April 2020, 09:55 UTC
e652e75 Fix issue where multiple file writers were created (#1424) Cache summary file writers and re-use them in ToTensorBoard monitor task. Fixes #1385 10 April 2020, 20:28 UTC
8e8ea85 type ci utils module (#1420) 09 April 2020, 21:07 UTC
6388133 Improve user experience on invalid assignments to constrained Parameters (#1408) Addresses #1407. * attempt to improve the error message in the gpflow.Parameter check on assigning a new value that is incompatible with the parameter's transform (e.g. a non-positive value to a parameter with a positive() transform) * Gaussian likelihood: add explicit `__init__`-time check that variance > variance_lower_bound, add `__init__` docstring, move "default variance lower bound" magic number into class-level constant * change gpflow.config's positive_minimum to always be a float (initialized to 0.0 by default) 08 April 2020, 13:52 UTC
92f914d fix compilation issue in ndiagquad when integrating over multiple dimensions (#1418) 08 April 2020, 13:45 UTC
5c89c1e Improve structure of likelihoods subdirectory (#1416) Addresses #1405 * New structure underneath gpflow/likelihoods/: * all base classes (Likelihood, MonteCarloLikelihood, ScalarLikelihood) and SwitchedLikelihood * multi-class classification (Softmax, MultiClass + RobustMax) * continuous-Y subclasses of ScalarLikelihood (Gaussian, StudentT, Exponential, Beta, Gamma) * discrete-Y subclasses of ScalarLikelihood (Bernoulli, Poisson, Ordinal) * the `inv_probit` link function used by Bernoulli and Beta likelihoods * GaussianMC - used for demonstration/tests only. (Note that usage, i.e. accessing gpflow.likelihoods.<LikelihoodClass>, has not changed.) * Tests for multi-class classification likelihoods moved out into their own test module (including stubs for the missing MultiClass quadrature tests of #1091) * Re-activates the quadrature tests for ScalarLikelihood subclasses with analytic variational_expectations/predict_log_density/predict_mean_and_var that inadvertently got disabled by #1334 * Fixes a bug in Bernoulli._predict_log_density that was uncovered by these tests * Fixes random seed for mock data generation in test_natural_gradient to make svgp_vs_gpr test pass again 08 April 2020, 09:48 UTC
dda8c39 update gpflow2 upgrade guide: likelihood section, predict_log_density, IsotropicStationary (#1414) 08 April 2020, 09:25 UTC
e7cfb8e Match original experimental setup for "metalearning with GPs" notebook. (#1382) * Match original experiment setup from paper. Replicate the original setup published in Fortuin and Ratsch (2019) and heavily comment the code with references to the paper. * Run `make format` and reduce hyperparameters to ease computation. * Format MSE and std to 2 decimals and sort randomly permuted indices. * Describe experimental modifications made in the notebook. * Plot target task training points. * Plot prediction variance/uncertainty. * Go with N=500, use more explicit name. * Address comments from @st-- 07 April 2020, 19:38 UTC
8094187 Use AUTOTUNE from (#1413) Best practice demonstrated in our notebooks 06 April 2020, 11:56 UTC
90f9a12 Fix MCMC sampler in documentation (#1410) * Increase MCMC sampling * Fix section links 03 April 2020, 17:04 UTC
ea10dea Fix mypy errors -variables are not types- (#1406) 03 April 2020, 13:12 UTC
7417180 update README for 2.0 release (#1401) 02 April 2020, 11:49 UTC
4dddadc Add clarity to coregionalization example (#1402) 01 April 2020, 13:40 UTC
1b023cb fixup website (#1398) 31 March 2020, 18:50 UTC
59f3e2c Update circleci to TF2.1 docker image (#1397) 31 March 2020, 15:15 UTC
47e788a Release 2.0.0 (#1396) 31 March 2020, 13:19 UTC
4f9aff7 Bump version to 2.0.0 (#1395) 31 March 2020, 13:04 UTC
7e717cc refactor training objective methods (#1276) This gives all `BayesianModel` subclasses a consistent interface both for optimization (MLE/MAP) and MCMC. Models are required to implement `maximum_log_likelihood_objective`, which is to be maximized for model training. Optimization: The `_training_loss` method is defined as `- (maximum_log_likelihood_objective + log_prior_density)`. This is exposed by the InternalDataTrainingLossMixin and ExternalDataTrainingLossMixin classes. For models that keep hold of the data internally, `training_loss` can directly be passed as a closure to an optimizer's `minimize`, for example: ```python model = gpflow.models.GPR(data, ...) gpflow.optimizers.Scipy().minimize(model.training_loss, model.trainable_variables) ``` If the model objective requires data to be passed in, a closure can be constructed on the fly using `model.training_loss_closure(data)`, which returns a no-argument closure: ```python model = gpflow.models.SVGP(...) gpflow.optimizers.Scipy().minimize( model.training_loss_closure(data), model.trainable_variables, ... ) ``` The training_loss_closure() method provided by both InternalDataTrainingLossMixin and ExternalDataTrainingLossMixin takes a boolean `compile` argument (default: True) that wraps the returned closure in tf.function(). Note that the return value should be cached in a variable if the minimize() step is run several times to avoid re-compilation in each step! MCMC: The `log_posterior_density` method can be directly passed to the `SamplingHelper`. By default, `log_posterior_density` is implemented as `maximum_log_likelihood_objective + log_prior_density`. Models can override this if needed. Example: ```python model = gpflow.models.GPMC(...) hmc_helper = gpflow.optimizers.SamplingHelper( model.log_posterior_density, model.trainable_parameters ) hmc = tfp.mcmc.HamiltonianMonteCarlo( target_log_prob_fn=hmc_helper.target_log_prob_fn, ... ) ``` In this case, the function that runs the MCMC chain should be wrapped in tf.function() (see MCMC notebook). 31 March 2020, 12:17 UTC
e61ee69 Add a section about custom user config (#1394) 31 March 2020, 10:00 UTC
27bc0d4 _scalar_log_density -> _scalar_log_prob (#1393) In GPflow2, the log probability density itself (summed over multiple outputs, if applicable) was called log_prob to be consistent with tensorflow_probability. In #1334 the element-wise log probability density to be implemented by ScalarLikelihood subclasses was called _scalar_log_density. This PR renames the latter to _scalar_log_prob to make it more self-consistent. 31 March 2020, 08:39 UTC
baa8bee Update upgrade guide (#1390) 31 March 2020, 08:29 UTC
d2ac01f Improve doc generation (#1391) * clarifying doc generation * add automodule for module level docstrings 31 March 2020, 08:23 UTC
72de787 rename jit to compile (#1392) 30 March 2020, 17:58 UTC
1e936e0 Increased tolerance for sqrt in kernels K_r2. (#1388) We had a report of numerical problems when the tolerance was 1e-40. So in GPflow 1 it got changed to 1e-36, but this wasn't ported to GPflow 2, hence why we're fixing it now. 30 March 2020, 12:08 UTC
792201d Added suggestion on how to open TensorBoard so it updates. (#1389) 30 March 2020, 11:35 UTC
c8e8f00 enable pickling of frozen models (#1338) Changes setattr_by_path to delete the attribute before setting it again. When simply replacing a Parameter with tf.Constant, tensorflow did not update its internal list of tracked variables, which prevented deepcopying and pickling of frozen models. Explicitly deleting the tracked variable before assigning a constant value forces tensorflow to update its state. Workaround for 30 March 2020, 11:20 UTC
0b9e1f0 MCMC cleanup (#1374) * SamplingHelper: clean up docstrings * SamplingHelper: do not convert to numpy in convert_to_constrained_samples * MCMC notebook: clean up; make faster (ci_niter); remove opaque use of utility function * MCMC notebook: clarify MCMC over Z for SGPMC - inducing points should be non-trainable * tests: use pytest.raises * tests: clean up match argument 30 March 2020, 11:17 UTC
1272141 fix notebook LaTeX equations + upgrade guide link (#1370) * fix notebook LaTeX equations * remove empty cells at bottom of notebooks * fix link to intro_to_gpflow2 in docs * Apply suggestions from code review Co-Authored-By: Vincent Dutordoir <> * fix internal notebook link * more fixes Co-authored-by: Vincent Dutordoir <> 30 March 2020, 10:33 UTC
aff62bc Make Scipy more robust & faster (#1377) * Adds an explicit check to Scipy() that all elements of `variables` are actually tf.Variable instances (unconstrained variables) - accidentally passing `model.trainable_parameters` may work but give the wrong answers for parameters with transforms! Passing `model.trainable_variables` is the right thing to do. * Updates _compute_loss_and_gradients to only compute gradients wrt passed-in variables. * Fix mixture density network notebook, which had erroneously passed model.trainable_parameters instead of model.trainable_variables. 30 March 2020, 09:32 UTC
d41d6eb Set kernelspec to Py3 in (#1386) Quickfix for the failing notebook during the doc generation on CircleCi. Problem was caused by an unknown Python version in the notebook's kernelspec. It has to be 'name: python3', whereas conda may add a user-specific custom name there. 30 March 2020, 08:49 UTC
82999c9 minimum required multipledispatch version is 0.6 (#1384) As shown by #1381, gpflow does not work with older versions of multipledispatch - this change reflects this in the version requirements. 30 March 2020, 08:47 UTC
7ec7955 speed up VFF notebook (#1383) 28 March 2020, 16:12 UTC
30824d2 Cleaning some todo (#1347) 27 March 2020, 18:15 UTC
0d97bc0 MCMC notebook prior update & helper refactoring (#1372) 27 March 2020, 16:57 UTC
cf35758 moved multioutput module files (#1353) Moved all `mo_` files to be in their own multioutput directory. This should be more sustainable as the number of multioutput items increases 27 March 2020, 15:23 UTC
66010a4 Update Readme (#1378) * added slack badge * prepare for release 2.0 * update contrib list 27 March 2020, 14:23 UTC
b4168fa shared interface with inducing variables (#1311) Added a shared interface for multioutput inducing variables and kernels Co-authored-by: ST John <> Co-authored-by: st-- <> 27 March 2020, 13:44 UTC
1196151 Update link to monitoring notebook in intro (#1376) 27 March 2020, 09:09 UTC
8d0128c fix Cosine kernel for multivariate inputs (#1357) The previous version operating on Euclidean distance was returning indefinite covariance matrices on multivariate data. This version, derived from eq. 4.7 of Wilson (2014), is always positive semidefinite. Closes #1328. This PR also changes the definition of the cosine kernel slightly, from sigma * cos(|x - x'| / l) to sigma * cos(2 * pi * (x - x') / l). This makes the lengthscale parameter directly interpretable as period length. It introduces new IsotropicStationary and AnisotropicStationary base classes. 26 March 2020, 21:02 UTC
c442e87 Monitoring of optimisation (#1344) 26 March 2020, 18:45 UTC
118dcfe Fixing up broken notebook links (#1369) Fixing broken notebook links in the README, GPFlow intro, and gpflow2 upgrade guide. Mostly links to files which used to be .ipynb jupyter files, and are now jupytext files. Removing (commenting out) a couple links to now-removed notebooks. Updating link to monitoring notebook, such that #1344 just needs to uncomment that line 26 March 2020, 16:46 UTC
26ee155 fix typing in gpflow.optimizers.scipy (#1364) 25 March 2020, 19:08 UTC
9481826 update (#1326) * updates * bring sphinx version up to date * travis->circleci, patch coverage * clarification * further cleanup * update copyright years in doc/source/ 25 March 2020, 18:58 UTC
310dfef Move TODO into NotImplementedError message (#1365) Move TODO in uncertain_conditional into NotImplementedError message 25 March 2020, 09:19 UTC
718da13 Do not install `dataclasses` for python >= 3.7 (#1355) 24 March 2020, 21:17 UTC
89e573d Added references to the recently released multioutput paper (#1361) * Added references to the recently released multioutput paper. * Apply st--'s suggestions from code review Co-Authored-By: st-- <> * Changed latex math from '$$' to equation environment. Co-authored-by: st-- <> 24 March 2020, 18:11 UTC
834ed79 improve shape robustness in likelihoods (#1334) This gives GPflow likelihoods a stronger contract re what input shapes are expected and what shapes are returned. In particular, we should obey something akin to tensorflow_probability’s event-shape/batch-shape/sample-shape. Very little changes for most users, except that some shapes will be asserted. Advanced users will benefit from more shape checks and better defined return shapes for methods attached to likelihoods. Likelihoods now need to define: - self.observation_dim: what is the last dimension of Y supposed to be? - self.latent_dim: what is the last dimension of F, F_mu and F_var expected to be? We’ll check that the dimensions of tensors passed in match up. Return shapes for all methods will be the broadcast-shape of the tensors passed in, with the last dimension removed. Example: likelihood.variational_expectations(F_mu, F_var, Y) might take tensors of dimensions [..., 2], [..., 2], [..., 2] and return a tensor of shape [...] The shape checks are handled by the public methods log_prob, predict_mean_and_var, predict_log_density, and variational_expectations; new likelihoods should implement the corresponding private methods with leading underscore. ## Standard likelihoods Most likelihoods in GPflow are univariate, and treat columns of Y and F as independent variables. For these observation_dim and latent_dim are None, and we shape-check F and Y on-the-fly for matching last-column dimensions. Note that the return shape contract changes as per that above, and the likelihood methods return the sum over observation dimensions. ## Fancy likelihoods Likelihoods that depart from the univariate standard include: SwitchedLikelihood [we’ll check that latent_dim = observation_dim - 1] MultiClass/Softmax [observation_dim = 1, latent_dim = number of classes (e.g. 10 for MNIST)] HeteroskedasticGaussian e.g. see GPflow notebook [observation_dim = 1, latent_dim = 2] Note that this change deprecates Likelihood.predict_density in favour of Likelihood.predict_log_density. 24 March 2020, 18:09 UTC
0919a92 Improve config documentation (#1267) 23 March 2020, 18:25 UTC
ce65114 gpflow2 upgrade guide: fix the Parameter.value -> Parameter.numpy() section (#1358) 23 March 2020, 13:40 UTC
43408ce Clean up type annotations and doc strings (#1346) * fix SGPR.__init__() argument types - fixes #1248 * improve predict_f_samples docstring - fixes #1249 * unify type annotations in models 23 March 2020, 12:11 UTC
1a7bb92 replace images with textual diff and add section on Parameter.trainable (#1356) * replace images with textual diff (removes the images) * move one level up as no longer requiring a separate directory * fix lengthscale -> lengthscales * additional section on Parameter.trainable 23 March 2020, 12:09 UTC
back to top