mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-04-30 23:36:23 +02:00
[inferenceX] test consistency
This commit is contained in:
parent
ec268cfde6
commit
3460b967a2
1 changed files with 25 additions and 58 deletions
|
|
@ -13,72 +13,39 @@ import GPy
|
|||
class InferenceXTestCase(unittest.TestCase):
|
||||
|
||||
def genData(self):
|
||||
np.random.seed(1)
|
||||
D1,D2,N = 12,12,50
|
||||
np.random.seed(1111)
|
||||
Ylist = GPy.examples.dimensionality_reduction._simulate_matern(5, 1, 1, 10, 3, False)[0]
|
||||
return Ylist[0]
|
||||
|
||||
x = np.linspace(0, 4 * np.pi, N)[:, None]
|
||||
s1 = np.vectorize(lambda x: np.sin(x))
|
||||
s2 = np.vectorize(lambda x: np.cos(x)**2)
|
||||
s3 = np.vectorize(lambda x:-np.exp(-np.cos(2 * x)))
|
||||
sS = np.vectorize(lambda x: np.cos(x))
|
||||
|
||||
s1 = s1(x)
|
||||
s2 = s2(x)
|
||||
s3 = s3(x)
|
||||
sS = sS(x)
|
||||
|
||||
s1 -= s1.mean(); s1 /= s1.std(0)
|
||||
s2 -= s2.mean(); s2 /= s2.std(0)
|
||||
s3 -= s3.mean(); s3 /= s3.std(0)
|
||||
sS -= sS.mean(); sS /= sS.std(0)
|
||||
|
||||
S1 = np.hstack([s1, sS])
|
||||
S2 = np.hstack([s3, sS])
|
||||
|
||||
P1 = np.random.randn(S1.shape[1], D1)
|
||||
P2 = np.random.randn(S2.shape[1], D2)
|
||||
|
||||
Y1 = S1.dot(P1)
|
||||
Y2 = S2.dot(P2)
|
||||
|
||||
Y1 += .01 * np.random.randn(*Y1.shape)
|
||||
Y2 += .01 * np.random.randn(*Y2.shape)
|
||||
|
||||
Y1 -= Y1.mean(0)
|
||||
Y2 -= Y2.mean(0)
|
||||
Y1 /= Y1.std(0)
|
||||
Y2 /= Y2.std(0)
|
||||
|
||||
slist = [s1, s2, s3, sS]
|
||||
slist_names = ["s1", "s2", "s3", "sS"]
|
||||
Ylist = [Y1, Y2]
|
||||
|
||||
return Ylist
|
||||
|
||||
def test_inferenceX_BGPLVM(self):
|
||||
def test_inferenceX_BGPLVM_Linear(self):
|
||||
Ys = self.genData()
|
||||
m = GPy.models.BayesianGPLVM(Ys[0],5,kernel=GPy.kern.Linear(5,ARD=True))
|
||||
|
||||
x,mi = m.infer_newX(m.Y, optimize=False)
|
||||
self.assertTrue(mi.checkgrad())
|
||||
|
||||
m.optimize(max_iters=10000)
|
||||
x, mi = m.infer_newX(m.Y)
|
||||
|
||||
print(m.X.mean - mi.X.mean)
|
||||
m = GPy.models.BayesianGPLVM(Ys,3,kernel=GPy.kern.Linear(3,ARD=True))
|
||||
m.optimize()
|
||||
x, mi = m.infer_newX(m.Y, optimize=True)
|
||||
np.testing.assert_array_almost_equal(m.X.mean, mi.X.mean, decimal=2)
|
||||
np.testing.assert_array_almost_equal(m.X.variance, mi.X.variance, decimal=2)
|
||||
|
||||
def test_inferenceX_GPLVM(self):
|
||||
def test_inferenceX_BGPLVM_RBF(self):
|
||||
Ys = self.genData()
|
||||
m = GPy.models.GPLVM(Ys[0],3,kernel=GPy.kern.RBF(3,ARD=True))
|
||||
m = GPy.models.BayesianGPLVM(Ys,3,kernel=GPy.kern.RBF(3,ARD=True))
|
||||
m.optimize()
|
||||
x, mi = m.infer_newX(m.Y, optimize=True)
|
||||
np.testing.assert_array_almost_equal(m.X.mean, mi.X.mean, decimal=2)
|
||||
np.testing.assert_array_almost_equal(m.X.variance, mi.X.variance, decimal=2)
|
||||
|
||||
x,mi = m.infer_newX(m.Y, optimize=False)
|
||||
self.assertTrue(mi.checkgrad())
|
||||
def test_inferenceX_GPLVM_Linear(self):
|
||||
Ys = self.genData()
|
||||
m = GPy.models.GPLVM(Ys,3,kernel=GPy.kern.Linear(3,ARD=True))
|
||||
m.optimize()
|
||||
x, mi = m.infer_newX(m.Y, optimize=True)
|
||||
np.testing.assert_array_almost_equal(m.X, mi.X, decimal=2)
|
||||
|
||||
# m.optimize(max_iters=10000)
|
||||
# x,mi = m.infer_newX(m.Y)
|
||||
# self.assertTrue(np.allclose(m.X, x))
|
||||
def test_inferenceX_GPLVM_RBF(self):
|
||||
Ys = self.genData()
|
||||
m = GPy.models.GPLVM(Ys,3,kernel=GPy.kern.RBF(3,ARD=True))
|
||||
m.optimize()
|
||||
x, mi = m.infer_newX(m.Y, optimize=True)
|
||||
np.testing.assert_array_almost_equal(m.X, mi.X, decimal=2)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue