From b7462e0fcc2b069ef5f0e2f37d3b96d9879c4361 Mon Sep 17 00:00:00 2001 From: James Hensman Date: Thu, 31 Jan 2013 08:54:57 +0000 Subject: [PATCH 1/2] fixed bug in rbf.py, removed the ARD moniker from the name variable --- GPy/kern/rbf.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/GPy/kern/rbf.py b/GPy/kern/rbf.py index ea76e4f5..7efbbfe9 100644 --- a/GPy/kern/rbf.py +++ b/GPy/kern/rbf.py @@ -26,28 +26,27 @@ class rbf(kernpart): :type ARD: Boolean :rtype: kernel object - .. Note: for rbf with different lengthscale on each dimension, see rbf_ARD + .. Note: this object implements both the ARD and 'spherical' version of the function """ def __init__(self,D,variance=1.,lengthscale=None,ARD=False): self.D = D + self.name = 'rbf' self.ARD = ARD if not ARD: self.Nparam = 2 - self.name = 'rbf' if lengthscale is not None: - assert lengthscale.shape == (1,) + assert lengthscale.size == 1 else: lengthscale = np.ones(1) else: self.Nparam = self.D + 1 - self.name = 'rbf_ARD' if lengthscale is not None: - assert lengthscale.shape == (self.D,) + assert lengthscale.size == self.D else: lengthscale = np.ones(self.D) - self._set_params(np.hstack((variance,lengthscale))) + self._set_params(np.hstack((variance,lengthscale.flatten()))) #initialize cache self._Z, self._mu, self._S = np.empty(shape=(3,1)) From 6197c1a8edafabe4d347e8cce96977f448cc6b8e Mon Sep 17 00:00:00 2001 From: James Hensman Date: Thu, 31 Jan 2013 09:02:18 +0000 Subject: [PATCH 2/2] robustified the assertion re lengthscales in rbf --- GPy/kern/rbf.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/GPy/kern/rbf.py b/GPy/kern/rbf.py index 7efbbfe9..1506b323 100644 --- a/GPy/kern/rbf.py +++ b/GPy/kern/rbf.py @@ -36,13 +36,15 @@ class rbf(kernpart): if not ARD: self.Nparam = 2 if lengthscale is not None: - assert lengthscale.size == 1 + lengthscale = np.asarray(lengthscale) + assert lengthscale.size == 1, "Only one lengthscale needed for non-ARD kernel" else: lengthscale = np.ones(1) else: self.Nparam = self.D + 1 if lengthscale is not None: - assert lengthscale.size == self.D + lengthscale = np.asarray(lengthscale) + assert lengthscale.size == self.D, "bad number of lengthscales" else: lengthscale = np.ones(self.D)