This document came into existence as of version 0.6. It should document breaking changes between versions, and discuss new features.
If you find a breaking change this is not reported here, please either raise an issue or make a PR to ammend this document.
This version contains some re-naming, specifically
WrappedGP
->AtomicGP
,wrap
->atomic
, andCompositeGP
->DerivedGP
, which better reflect what these types / functions represent in the context of aGPPP
. It's possible that you've never interacted with them, in which case there's nothing to worry about.
Lots of code has been moved around in order to better organise everything.
A method of vcat
has been added to build BlockData
from GPPPInput
s. This can make
your code look a bit nicer, so you might want to use it.
Additionally, this package no longer depends explicitly upon Zygote or ZygoteRules. Instead, all AD rules that are needed use ChainRulesCore directly.
Deprecations mentioned in the 0.7 release have also been dropped.
- Deprecate
approx_posterior
in favour ofposterior
. This is being removed because it has been removed in AbstractGPs in favour ofposterior
. It will be entirely removed in the next breaking release. - Remove some redundant testing infrastructure and tidy up the file structure slightly.
Enable WrappedGP to work with any AbstractGP, not just the GP type.
AbstractGPs now takes care of everything sparsity-related. Consequently, Stheno no longer tests anything ELBO-related, and the functionality you get will depend entirely upon which version of AbstractGPs you're using.
This version contains a large number of very breaking changes -- some of the basics of the package have completely changed. The over-riding concern has been to make Stheno work well with the AbstractGPs API. Of particular note is the new GPPP
/ GaussianProcessProbabilisticProgramme
type, which represents a collection of processes and treats them as a single AbstractGP
.
- The
GaussianProcessProbabilisticProgramme
type has been introduced, and is the new recommended way to work with Stheno.jl. See its docstring, README, and the examples directory for details. - The
@model
macro is gone, and has been replaced with the@gppp
macro. This new macro has quite different functionality, and produces aGPPP
object. - Stheno's own kernels have been replaced by ones from
KernelFunctions.jl
. This has removed a lot of code from the repo, but completely changes the function calls required to build GPs. To upgrade, consult KernelFunctions.jl for equivalent kernels. - Stheno's internal GP type has been replaced with a wrapper type
WrappedGP
forAbstractGP
s. - Stheno's internal conditioning and approximate-conditioning functionality has been entirely removed, in favour of using AbstractGPs
posterior
andapprox_posterior
directly on entireGPPP
s. This much simpler approach generally makes for correspondingly simpler code.
- Kernels defined using
KernelFunctions.jl
should all work now. - The @gppp macro.
- New
GPPPInput
type for working withGPPP
s. BlockData
exported for working with multiple processes in aGPPP
at once.
- Fixed performance bug in reverse-mode gradient computation for the
ELBO
, whereby anO(N^3)
computation happened in cases where it shouldn't.
- Lower-case kernel constructors (
eq()
,eq(l)
, etc) are deprecated in favour of directly constructing the types via their upper-case names (EQ()
etc), and the convenience functionkernel(EQ(); l=0.1, s=1.1)
. The previous design was hard to maintain and somewhat opaque. The new design is self-consistent and entirely straightforward to maintain.
- Documentation is significantly improved in the form of many additional docstrings and a couple of new pages of documentation in the docs.