Compositionally Warped GPs

Enable training on non-Gaussian observation noise with warping.

Warp functions are used to map data to a different domain to train the Gaussian process. Although Vanguard contains many pre-written warp functions, any new ones can be created by subclassing WarpFunction and implementing the forward(), inverse() and (optionally) deriv() methods.

Warp functions are applied to a GPController subclass using the SetWarp decorator.

class vanguard.warps.SetWarp(warp_function, **kwargs)[source]

Bases: Decorator

Map a GP through a warp function.

Example:
>>> from vanguard.base import GPController
>>> from vanguard.warps.warpfunctions import BoxCoxWarpFunction
>>>
>>> @SetWarp(BoxCoxWarpFunction(1))
... class MyController(GPController):
...     pass
Parameters:
__init__(warp_function, **kwargs)[source]

Initialise self.

Parameters:
  • warp_function (WarpFunction) – The warp function to be applied to the GP.

  • kwargs (Any) – Keyword arguments passed to Decorator.

property safe_updates: dict[type, set[str]]

Get a dictionary (class -> set[names]) of overrides/new methods that we consider “safe”.