mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-10 04:22:38 +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)
|
||||
elif init in "PCA_single":
|
||||
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):
|
||||
x,frcs = initialize_latent('PCA', len(qs), Y)
|
||||
x, frcs = initialize_latent('PCA', len(qs), Y)
|
||||
X[:, qs] = x
|
||||
fracs.append(frcs)
|
||||
fracs[:, qs] = frcs
|
||||
else: # init == 'random':
|
||||
X = np.random.randn(Ylist[0].shape[0], self.input_dim)
|
||||
fracs = X.var(0)
|
||||
|
|
@ -208,9 +208,7 @@ class MRD(BayesianGPLVMMiniBatch):
|
|||
X /= X.std()
|
||||
return X, fracs
|
||||
|
||||
def _init_Z(self, init="permute", X=None):
|
||||
if X is None:
|
||||
X = self.X
|
||||
def _init_Z(self, init, X):
|
||||
if init in "permute":
|
||||
Z = np.random.permutation(X.copy())[:self.num_inducing]
|
||||
elif init in "random":
|
||||
|
|
|
|||
|
|
@ -328,6 +328,41 @@ class MiscTests(unittest.TestCase):
|
|||
m.checkgrad()
|
||||
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):
|
||||
m = GPy.models.GPRegression(self.X, self.Y)
|
||||
lengthscale = np.random.uniform()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue