From 81eb22dffd2b011953d4d08faa1e5cbf7c80359a Mon Sep 17 00:00:00 2001 From: Ricardo Date: Fri, 13 Sep 2013 12:31:16 +0100 Subject: [PATCH] R paramter renamed as W_columns, and Nout renamed as num_outputs --- GPy/kern/parts/coregionalise.py | 63 ++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/GPy/kern/parts/coregionalise.py b/GPy/kern/parts/coregionalise.py index 8faceafe..e98cd0da 100644 --- a/GPy/kern/parts/coregionalise.py +++ b/GPy/kern/parts/coregionalise.py @@ -9,24 +9,32 @@ from scipy import weave class Coregionalise(Kernpart): """ - Kernel for Intrinsic Corregionalization Models + Kernel for Intrinsic Coregionalization Models + + This kernel has the form: K = np.dot(W,W.T) + np.diag(kappa) + An intrinsec coregionalization kernel is obtained as the tensor product between a different kernel and the coregionalize kernel. + + :param num_outputs: number of outputs to coregionalize + :param W_columns: number of columns of the W matrix (this parameter is ignored if parameter W is not None) + :param W: array of shape (num_outputs, W_columns) + :param kappa: array of dimensions (num_outputs,) """ - def __init__(self,Nout,R=1, W=None, kappa=None): + def __init__(self,num_outputs,W_columns=1, W=None, kappa=None): self.input_dim = 1 self.name = 'coregion' - self.Nout = Nout - self.R = R + self.num_outputs = num_outputs + self.W_columns = W_columns if W is None: - self.W = np.ones((self.Nout,self.R)) + self.W = np.ones((self.num_outputs,self.W_columns)) else: - assert W.shape==(self.Nout,self.R) + assert W.shape==(self.num_outputs,self.W_columns) self.W = W if kappa is None: - kappa = np.ones(self.Nout) + kappa = np.ones(self.num_outputs) else: - assert kappa.shape==(self.Nout,) + assert kappa.shape==(self.num_outputs,) self.kappa = kappa - self.num_params = self.Nout*(self.R + 1) + self.num_params = self.num_outputs*(self.W_columns + 1) self._set_params(np.hstack([self.W.flatten(),self.kappa])) def _get_params(self): @@ -34,12 +42,12 @@ class Coregionalise(Kernpart): def _set_params(self,x): assert x.size == self.num_params - self.kappa = x[-self.Nout:] - self.W = x[:-self.Nout].reshape(self.Nout,self.R) + self.kappa = x[-self.num_outputs:] + self.W = x[:-self.num_outputs].reshape(self.num_outputs,self.W_columns) self.B = np.dot(self.W,self.W.T) + np.diag(self.kappa) def _get_param_names(self): - return sum([['W%i_%i'%(i,j) for j in range(self.R)] for i in range(self.Nout)],[]) + ['kappa_%i'%i for i in range(self.Nout)] + return sum([['W%i_%i'%(i,j) for j in range(self.W_columns)] for i in range(self.num_outputs)],[]) + ['kappa_%i'%i for i in range(self.num_outputs)] def K(self,index,index2,target): index = np.asarray(index,dtype=np.int) @@ -57,26 +65,26 @@ class Coregionalise(Kernpart): if index2 is None: code=""" for(int i=0;i