AbstractGPs.jl

Abstract types and methods for Gaussian Processes.
Author JuliaGaussianProcesses
Popularity
4 Stars
Updated Last
23 Days Ago
Started In
April 2020

AbstractGPs

Stable Dev Build Status Codecov Code Style: Blue

AbstractGPs.jl is a package that defines a low-level API for working with Gaussian processes (GPs), and basic functionality for working with them in the simplest cases. As such it is aimed more at developers and researchers who are interested in using it as a building block than end-users of GPs.

Example Usage

using AbstractGPs, KernelFunctions, Random

# Construct a zero-mean Gaussian process with a matern-3/2 kernel.
f = GP(Matern32Kernel())

rng = MersenneTwister(0)

# Specify some input locations.
x = randn(rng, 10)

# Look at the finite-dimensional marginals of `f` at `x`, under zero-mean observation noise with variance `s`.
s = 0.1
fx = f(x, s)

# Sample from the prior at `x` under noise.
y = rand(rng, fx)

# Compute the log marginal probability of `y`.
logpdf(fx, y)

# Construct the posterior process implied by conditioning `f` at `x` on `y`.
f_posterior = posterior(fx, y)

# A posterior process follows the `AbstractGP` interface, so the same
# functions work on the posterior as the prior.
rand(rng, f_posterior(x))
logpdf(f_posterior(x), y)

# Compute the VFE approximation to the log marginal probability of `y`.
z = randn(rng, 4)
u = f(z)
elbo(fx, y, u)

# Construct the approximate posterior process implied by the VFE approximation.
f_approx_posterior = approx_posterior(VFE(), fx, y, u)

# An approximate posterior process is yet another `AbstractGP`, so you can do things with it like
marginals(f_approx_posterior(x))

Used By Packages

No packages found.