Skip to content

Commit

Permalink
add more kernels
Browse files Browse the repository at this point in the history
  • Loading branch information
t-vi committed Nov 4, 2017
1 parent 194d888 commit dc1e26e
Show file tree
Hide file tree
Showing 2 changed files with 210 additions and 79 deletions.
59 changes: 59 additions & 0 deletions candlegp/kernels.py
Original file line number Diff line number Diff line change
Expand Up @@ -307,3 +307,62 @@ def K(self, X, X2=None, presliced=False):
res = self.variance.get() * torch.exp(-0.5 * self.square_dist(X, X2))
return res

class Exponential(Stationary):
"""
The Exponential kernel
"""

def K(self, X, X2=None, presliced=False):
if not presliced:
X, X2 = self._slice(X, X2)
r = self.euclid_dist(X, X2)
return self.variance.get() * torch.exp(-0.5 * r)


class Matern12(Stationary):
"""
The Matern 1/2 kernel
"""

def K(self, X, X2=None, presliced=False):
if not presliced:
X, X2 = self._slice(X, X2)
r = self.euclid_dist(X, X2)
return self.variance.get() * torch.exp(-r)


class Matern32(Stationary):
"""
The Matern 3/2 kernel
"""

def K(self, X, X2=None, presliced=False):
if not presliced:
X, X2 = self._slice(X, X2)
r = self.euclid_dist(X, X2)
return self.variance.get() * (1. + (3.**0.5) * r) * torch.exp(-(3.**0.5) * r)


class Matern52(Stationary):
"""
The Matern 5/2 kernel
"""

def K(self, X, X2=None, presliced=False):
if not presliced:
X, X2 = self._slice(X, X2)
r = self.euclid_dist(X, X2)
return self.variance.get() * (1.0 + (5.**0.5) * r + 5. / 3. * r**2) * torch.exp(-(5.**0.5) * r)


class Cosine(Stationary):
"""
The Cosine kernel
"""

def K(self, X, X2=None, presliced=False):
if not presliced:
X, X2 = self._slice(X, X2)
r = self.euclid_dist(X, X2)
return self.variance.get() * torch.cos(r)

Loading

0 comments on commit dc1e26e

Please sign in to comment.