Kernels
API reference
gpLib.SigmaKernel
- class gpLib.SigmaKernel(power='abs', alpha_prior: object | None = None, alpha_constraint=None, **kwargs)
Non-stationary multiplicative kernel
\[\begin{split}k(x,x') &= \sigma(x)\,\sigma(x'),\\ \sigma(x) &= \begin{cases} \exp\!\bigl(-\alpha\,|x|\bigr), & \text{``abs''},\\[6pt] \exp\!\bigl(-\alpha\,x^{2}\bigr), & \text{``square''}. \end{cases}\end{split}\]- Parameters:
power – Either
"abs"
or"square"
(see above).- Variables:
alpha (torch.Tensor) – Positive decay rate.
gpLib.SpaceTime1d
- class gpLib.SpaceTime1d(**kwargs)
One-dimensional space–time covariance (Bolin & Wallin 2016).
Inputs are 2-vectors \((x,t)\). With parameters \(\phi,a,a',c,\alpha,\delta,\alpha',\gamma,\varepsilon \ge 0\)
\[k\bigl((x,t),(x',t')\bigr) \;=\; \underbrace{\frac{\phi} {\bigl(1+a\,(t-t')^{2}\bigr)^{\alpha}} \exp\!\Bigl[ -\frac{c\;\|x-x'-\varepsilon(t-t')\|^{2\gamma}} {\bigl(1+a\,(t-t')^{2}\bigr)^{\alpha\gamma}} \Bigr]}_{\text{spatio-temporal interaction}} \;+\; \underbrace{\frac{\delta\,\mathbf 1_{x=x'}} {\bigl(1+a'(t-t')^{2}\bigr)^{\alpha'}}}_{\text{pure nugget}}\]- Parameters:
batch_shape – Optional batch shape.
- Variables:
epsilon (torch.Tensor) – Space–time advection parameter.
gamma (torch.Tensor a, a_prime, c, phi, alpha, delta, alpha_prime,) – Positive parameters with constraints shown in code.
gpLib.MinKernel
- class gpLib.MinKernel(offset_prior: Prior | None = None, offset_constraint: Interval | None = None, **kwargs)
Min kernel (integrated Brownian motion)
\[k(x,x') \;=\; \min(x,x') + \text{offset}.\]For numerical efficiency we use the identity
\[\min(x,x') \;=\; \tfrac12\!\bigl(|x| + |x'| - |x-x'|\bigr).\]The underlying covariance is that of a continuous-time Brownian motion (discrete-time Gaussian random walk).
- Variables:
offset (torch.Tensor) – Non-negative constant added to all entries.
gpLib.FractionalGaussianNoise
- class gpLib.FractionalGaussianNoise(H_prior: Prior | None = None, H_constraint: Interval | None = None, **kwargs)
Discrete fractional Gaussian noise kernel.
For increment lag \(h = x - x'\)
\[k(h) \;=\; \tfrac12 \Bigl(|h+1|^{\alpha} - 2|h|^{\alpha} + |h-1|^{\alpha}\Bigr), \qquad \alpha = 2H,\; H\in(0.5,1).\]- Parameters:
H_prior – Optional prior on the Hurst index \(H\).
H_constraint – Interval \((0.51,0.99)\) by default.
- Variables:
H (torch.Tensor) – Hurst exponent.
gpLib.RBFNonSeparableKernel
- class gpLib.RBFNonSeparableKernel(**kwargs)
Anisotropic squared-exponential (non-separable) kernel.
\[k(\mathbf x,\mathbf y) = \exp\!\Bigl[ -\tfrac12(\mathbf x-\mathbf y)^{\top}A^{-1}(\mathbf x-\mathbf y) \Bigr],\]\[\begin{split}A^{-1} = \begin{pmatrix} a & -\rho\sqrt{ac}\\ -\rho\sqrt{ac} & c \end{pmatrix}, \qquad a,c>0,\;|\rho|<1.\end{split}\]Equivalent length-scales:
\[\ell_{1} = \sqrt{\frac{1}{a(1-\rho^{2})}},\qquad \ell_{2} = \sqrt{\frac{1}{c(1-\rho^{2})}}.\]- Variables:
a,c,rho (torch.Tensor) – Raw parameters defining \(A^{-1}\).
gpLib.MaxDistanceKernel
- class gpLib.MaxDistanceKernel(c: float, **kwargs)
Max-distance kernel on a bounded domain
\[k(\mathbf x,\mathbf y) \;=\; c - \bigl\|\mathbf x-\mathbf y\bigr\|_{A}, \qquad \|\mathbf v\|_{A} := \sqrt{\mathbf v^{\top}A\mathbf v},\]with fixed diameter \(c\) and anisotropy matrix
\[\begin{split}A=\begin{pmatrix}1 & -\gamma\\ -\gamma & 1\end{pmatrix}, \; 0\le\gamma<1.\end{split}\]- Parameters:
c – Upper bound of the metric (must dominate all pairwise distances).
- Variables:
gamma (float) – Off-diagonal coupling (set to 0.5 in code).
gpLib.MaternNonSeparableKernel
- class gpLib.MaternNonSeparableKernel(nu: float = 2.5, **kwargs)
2-D anisotropic Matérn kernel with Mahalanobis distance.
\[\begin{split}r^{2} = (\mathbf x-\mathbf y)^{\top}A^{-1}(\mathbf x-\mathbf y),\qquad k_\nu(r) = \begin{cases} \exp(-r), & \nu=\tfrac12\\[4pt] (1+\sqrt3\,r)\exp(-\sqrt3\,r), & \nu=\tfrac32\\[4pt] \bigl(1+\sqrt5\,r+\tfrac53 r^{2}\bigr)\exp(-\sqrt5\,r), & \nu=\tfrac52 \end{cases}\end{split}\]- Parameters:
nu – Smoothness (0.5, 1.5, 2.5).
a,c,rho – Define \(A^{-1}\) as in
RBFNonSeparableKernel
.
gpLib.fBMKernel
- class gpLib.fBMKernel(H_prior: Prior | None = None, H_constraint: Interval | None = None, **kwargs)
Fractional Brownian motion covariance
\[k(s,t) = \tfrac12\Bigl(|s|^{\alpha} + |t|^{\alpha} - |s-t|^{\alpha}\Bigr), \qquad \alpha = 2H,\; H\in(0.5,1).\]The kernel is non-stationary and self-similar of order \(H\).
- Parameters:
H_constraint – Interval \((0.51,0.99)\) by default.
- Variables:
H (torch.Tensor) – Hurst exponent.
gpLib.WendlandKernel
- class gpLib.WendlandKernel(mu: float = 1.0, k: int = 0, **kwargs)
Compactly-supported Wendland kernel.
Let \(t = \|x-x'\|/\ell_{0}\), \((1-t)_+ = \max(1-t,0)\) and \(\ell = k+1+\mu\).
\[\begin{split}k(t) = \begin{cases} (1-t)_+^{\ell}, & k = 0,\\[6pt] (1-t)_+^{\ell+1}\bigl[1 + (\ell+1)t\bigr], & k = 1,\\[6pt] (1-t)_+^{\ell+2}\!\Bigl[ 1 + (\ell+2)t + \tfrac13(\ell^{2}+4\ell+3)t^{2} \Bigr], & k = 2. \end{cases}\end{split}\]- Parameters:
mu – Smoothness parameter \(\mu>0\).
k – Order 0, 1 or 2 (see cases above).
gpLib.PowerExponentialKernel
- class gpLib.PowerExponentialKernel(alpha_prior: Prior | None = None, alpha_constraint: Interval | None = None, **kwargs)
Generalised exponential kernel
\[k(x,x') = \exp\!\Bigl[-\bigl(r/\ell\bigr)^{\alpha}\Bigr],\quad r = \|x-x'\|,\; 0<\alpha\le 2.\]- Parameters:
alpha_prior – Optional prior over \(\alpha\).
alpha_constraint – Interval \((0,2]\).
- Variables:
alpha (torch.Tensor) – Shape (*batch,1,ard).
gpLib.GeneralCauchy
- class gpLib.GeneralCauchy(alpha_constraint: Interval | None = None, beta_constraint: Interval | None = None, **kwargs)
Generalised Cauchy kernel
\[\begin{split}k(r) = \bigl(1 + r^{\alpha}\bigr)^{-\beta/\alpha},\\ r = \frac{\lVert x - x' \rVert}{\ell}\end{split}\]with
(0 < alpha le 2)
(beta > 0)
- Variables:
beta (torch.Tensor alpha,) – Shape
(*batch,1)
.
gpLib.CosineKernel
- class gpLib.CosineKernel(period_prior: Prior | None = None, period_constraint: Interval | None = None, **kwargs)
Stationary cosine kernel
\[k(x,x') = \cos\!\Bigl(\tfrac{2\pi}{p}\,\lvert x-x'\rvert\Bigr),\]periodic with period \(p\).
- Parameters:
period_prior – Optional prior on \(p\).
period_constraint – Positive.
- Variables:
period (torch.Tensor) – The period \(p\).
gpLib.GeneralizedOU
- class gpLib.GeneralizedOU(H_constraint: Interval | None = None, **kwargs)
Generalised Ornstein–Uhlenbeck kernel (stationary)
\[k(h) = \cosh\!\bigl(H\,|h|/\ell\bigr) \;-\; \frac{\bigl[\sinh(|h|/(2\ell))\bigr]^{2H}}{2},\]with Hurst-like parameter \(H\in(0,1)\) and lengthscale \(\ell\).
- Parameters:
H_constraint – Interval \((0,1)\).
- Variables:
H (torch.Tensor) – Shape (*batch,1).
gpLib.TwoParamKernel
- class gpLib.TwoParamKernel(H_constraint: Interval | None = None, alpha_constraint: Positive | None = None, **kwargs)
Two-parameter power-law kernel (non-stationary)
\[k(s,t) = (s\,t)^{H}\; \exp\!\bigl[-\alpha\,|\log(t/s)|\bigr], \qquad 0<H<1,\; \alpha>0,\; s,t>0.\]- Parameters:
H_constraint – Interval \((0,1)\).
alpha_constraint – Positive.
- Variables:
alpha (torch.Tensor H,) – Shape (*batch,1).
gpLib.NonStationaryGeneralizedOU
- class gpLib.NonStationaryGeneralizedOU(H_constraint: Interval | None = None, alpha_constraint: Positive | None = None, **kwargs)
Time-varying generalised OU kernel
Let \(x = t + \tau/2,\; y = t - \tau/2\). With parameters \(H,\alpha>0\)
\[k(x,y) = \cosh\!\bigl[(H+\alpha t)\,|\tau|\bigr] \;-\; \bigl[2\sinh(|\tau|/2)\bigr]^{\,H+\alpha t}.\]The process is non-stationary in mean square; variance grows with t.
- Parameters:
H_constraint – Interval \((0,1)\).
alpha_constraint – Positive.
- Variables:
alpha (torch.Tensor H,) – Shape (*batch,1).