The main focus of this release is the new "Posterior" object introduced by
PR 1636, which allows for a significant speed-up of post-training predictions
with the `SVGP` model (partially resolving 1599).
* For end-users, by default nothing changes; see Breaking Changes below if you
have written your own _implementations_ of `gpflow.conditionals.conditional`.
* After training an `SVGP` model, you can call `model.posterior()` to obtain a
Posterior object that precomputes all quantities not depending on the test
inputs (e.g. Choleskty of Kuu), and provides a `posterior.predict_f()` method
that reuses these cached quantities. `model.predict_f()` computes exactly the
same quantities as before and does **not** give any speed-up.
* `gpflow.conditionals.conditional()` forwards to the same "fused" code-path as
before.
Breaking Changes
* `gpflow.conditionals.conditional.register` is deprecated and should not be
called outside of the GPflow core code. If you have written your own
implementations of `gpflow.conditionals.conditional()`, you have two options
to use your code with GPflow 2.2:
1. Temporary work-around: Instead of `gpflow.models.SVGP`, use the
backwards-compatible `gpflow.models.svgp.SVGP_deprecated`.
2. Convert your conditional() implementation into a subclass of
`gpflow.posteriors.AbstractPosterior`, and register
`get_posterior_class()` instead (see the "Variational Fourier Features"
notebook for an example).
Known Caveats
* The Posterior object is currently only available for the `SVGP` model. We
would like to extend this to the other models such as `GPR`, `SGPR`, or `VGP`, but
this effort is beyond what we can currently provide. If you would be willing
to contribute to those efforts, please get in touch!
* The Posterior object does not currently provide the `GPModel` convenience
functions such as `predict_f_samples`, `predict_y`, `predict_log_density`.
Again, if you're willing to contribute, get in touch!
Thanks to our Contributors
This release contains contributions from:
stefanosele, johnamcleod, st--