mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-10 20:42:39 +02:00
[mrd] init updates and added tests
This commit is contained in:
parent
6d4714cf0e
commit
f0b17d7b1a
2 changed files with 39 additions and 6 deletions
|
|
@ -195,11 +195,11 @@ class MRD(BayesianGPLVMMiniBatch):
|
||||||
fracs = [fracs]*len(Ylist)
|
fracs = [fracs]*len(Ylist)
|
||||||
elif init in "PCA_single":
|
elif init in "PCA_single":
|
||||||
X = np.zeros((Ylist[0].shape[0], self.input_dim))
|
X = np.zeros((Ylist[0].shape[0], self.input_dim))
|
||||||
fracs = []
|
fracs = np.empty((len(Ylist), self.input_dim))
|
||||||
for qs, Y in zip(np.array_split(np.arange(self.input_dim), len(Ylist)), Ylist):
|
for qs, Y in zip(np.array_split(np.arange(self.input_dim), len(Ylist)), Ylist):
|
||||||
x,frcs = initialize_latent('PCA', len(qs), Y)
|
x, frcs = initialize_latent('PCA', len(qs), Y)
|
||||||
X[:, qs] = x
|
X[:, qs] = x
|
||||||
fracs.append(frcs)
|
fracs[:, qs] = frcs
|
||||||
else: # init == 'random':
|
else: # init == 'random':
|
||||||
X = np.random.randn(Ylist[0].shape[0], self.input_dim)
|
X = np.random.randn(Ylist[0].shape[0], self.input_dim)
|
||||||
fracs = X.var(0)
|
fracs = X.var(0)
|
||||||
|
|
@ -208,9 +208,7 @@ class MRD(BayesianGPLVMMiniBatch):
|
||||||
X /= X.std()
|
X /= X.std()
|
||||||
return X, fracs
|
return X, fracs
|
||||||
|
|
||||||
def _init_Z(self, init="permute", X=None):
|
def _init_Z(self, init, X):
|
||||||
if X is None:
|
|
||||||
X = self.X
|
|
||||||
if init in "permute":
|
if init in "permute":
|
||||||
Z = np.random.permutation(X.copy())[:self.num_inducing]
|
Z = np.random.permutation(X.copy())[:self.num_inducing]
|
||||||
elif init in "random":
|
elif init in "random":
|
||||||
|
|
|
||||||
|
|
@ -328,6 +328,41 @@ class MiscTests(unittest.TestCase):
|
||||||
m.checkgrad()
|
m.checkgrad()
|
||||||
print(m)
|
print(m)
|
||||||
|
|
||||||
|
def test_mrd(self):
|
||||||
|
from GPy.inference.latent_function_inference import InferenceMethodList, VarDTC
|
||||||
|
from GPy.likelihoods import Gaussian
|
||||||
|
Y1 = np.random.normal(0, 1, (40, 13))
|
||||||
|
Y2 = np.random.normal(0, 1, (40, 6))
|
||||||
|
Y3 = np.random.normal(0, 1, (40, 8))
|
||||||
|
Q = 5
|
||||||
|
m = GPy.models.MRD(dict(data1=Y1, data2=Y2, data3=Y3), Q,
|
||||||
|
)
|
||||||
|
m.randomize()
|
||||||
|
self.assertTrue(m.checkgrad())
|
||||||
|
|
||||||
|
m = GPy.models.MRD(dict(data1=Y1, data2=Y2, data3=Y3), Q, initx='PCA_single',
|
||||||
|
initz='random',
|
||||||
|
kernel=[GPy.kern.RBF(Q, ARD=1) for _ in range(3)],
|
||||||
|
inference_method=InferenceMethodList([VarDTC() for _ in range(3)]),
|
||||||
|
likelihoods = [Gaussian(name='Gaussian_noise'.format(i)) for i in range(3)])
|
||||||
|
m.randomize()
|
||||||
|
self.assertTrue(m.checkgrad())
|
||||||
|
|
||||||
|
m = GPy.models.MRD(dict(data1=Y1, data2=Y2, data3=Y3), Q, initx='random',
|
||||||
|
initz='random',
|
||||||
|
kernel=GPy.kern.RBF(Q, ARD=1),
|
||||||
|
)
|
||||||
|
m.randomize()
|
||||||
|
self.assertTrue(m.checkgrad())
|
||||||
|
|
||||||
|
m = GPy.models.MRD(dict(data1=Y1, data2=Y2, data3=Y3), Q, X=np.random.normal(0,1,size=(40,Q)),
|
||||||
|
X_variance=False,
|
||||||
|
kernel=GPy.kern.RBF(Q, ARD=1),
|
||||||
|
likelihoods = [Gaussian(name='Gaussian_noise'.format(i)) for i in range(3)])
|
||||||
|
m.randomize()
|
||||||
|
self.assertTrue(m.checkgrad())
|
||||||
|
|
||||||
|
|
||||||
def test_model_set_params(self):
|
def test_model_set_params(self):
|
||||||
m = GPy.models.GPRegression(self.X, self.Y)
|
m = GPy.models.GPRegression(self.X, self.Y)
|
||||||
lengthscale = np.random.uniform()
|
lengthscale = np.random.uniform()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue