mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-30 14:35:15 +02:00
merge devel to ties
This commit is contained in:
commit
3653892d19
68 changed files with 643 additions and 366 deletions
|
|
@ -51,7 +51,7 @@ class Kern_check_dK_dtheta(Kern_check_model):
|
|||
"""
|
||||
def __init__(self, kernel=None, dL_dK=None, X=None, X2=None):
|
||||
Kern_check_model.__init__(self,kernel=kernel,dL_dK=dL_dK, X=X, X2=X2)
|
||||
self.add_parameter(self.kernel)
|
||||
self.link_parameter(self.kernel)
|
||||
|
||||
def parameters_changed(self):
|
||||
return self.kernel.update_gradients_full(self.dL_dK, self.X, self.X2)
|
||||
|
|
@ -64,7 +64,7 @@ class Kern_check_dKdiag_dtheta(Kern_check_model):
|
|||
"""
|
||||
def __init__(self, kernel=None, dL_dK=None, X=None):
|
||||
Kern_check_model.__init__(self,kernel=kernel,dL_dK=dL_dK, X=X, X2=None)
|
||||
self.add_parameter(self.kernel)
|
||||
self.link_parameter(self.kernel)
|
||||
|
||||
def log_likelihood(self):
|
||||
return (np.diag(self.dL_dK)*self.kernel.Kdiag(self.X)).sum()
|
||||
|
|
@ -77,7 +77,7 @@ class Kern_check_dK_dX(Kern_check_model):
|
|||
def __init__(self, kernel=None, dL_dK=None, X=None, X2=None):
|
||||
Kern_check_model.__init__(self,kernel=kernel,dL_dK=dL_dK, X=X, X2=X2)
|
||||
self.X = Param('X',X)
|
||||
self.add_parameter(self.X)
|
||||
self.link_parameter(self.X)
|
||||
|
||||
def parameters_changed(self):
|
||||
self.X.gradient[:] = self.kernel.gradients_X(self.dL_dK, self.X, self.X2)
|
||||
|
|
@ -215,7 +215,10 @@ def check_kernel_gradient_functions(kern, X=None, X2=None, output_ind=None, verb
|
|||
if verbose:
|
||||
print("Checking gradients of Kdiag(X) wrt X.")
|
||||
try:
|
||||
result = Kern_check_dKdiag_dX(kern, X=X).checkgrad(verbose=verbose)
|
||||
testmodel = Kern_check_dKdiag_dX(kern, X=X)
|
||||
if fixed_X_dims is not None:
|
||||
testmodel.X[:,fixed_X_dims].fix()
|
||||
result = testmodel.checkgrad(verbose=verbose)
|
||||
except NotImplementedError:
|
||||
result=True
|
||||
if verbose:
|
||||
|
|
@ -346,6 +349,7 @@ class KernelTestsNonContinuous(unittest.TestCase):
|
|||
kern = GPy.kern.IndependentOutputs(k, -1, name='ind_split')
|
||||
self.assertTrue(check_kernel_gradient_functions(kern, X=self.X, X2=self.X2, verbose=verbose, fixed_X_dims=-1))
|
||||
|
||||
|
||||
def test_ODE_UY(self):
|
||||
kern = GPy.kern.ODE_UY(2, active_dims=[0, self.D])
|
||||
X = self.X[self.X[:,-1]!=2]
|
||||
|
|
|
|||
|
|
@ -65,28 +65,28 @@ class MiscTests(unittest.TestCase):
|
|||
np.testing.assert_equal(m.log_likelihood(), m2.log_likelihood())
|
||||
m.randomize()
|
||||
m2[:] = m[''].values()
|
||||
np.testing.assert_equal(m.log_likelihood(), m2.log_likelihood())
|
||||
np.testing.assert_almost_equal(m.log_likelihood(), m2.log_likelihood())
|
||||
m.randomize()
|
||||
m2[''] = m[:]
|
||||
np.testing.assert_equal(m.log_likelihood(), m2.log_likelihood())
|
||||
np.testing.assert_almost_equal(m.log_likelihood(), m2.log_likelihood())
|
||||
m.randomize()
|
||||
m2[:] = m[:]
|
||||
np.testing.assert_equal(m.log_likelihood(), m2.log_likelihood())
|
||||
np.testing.assert_almost_equal(m.log_likelihood(), m2.log_likelihood())
|
||||
m.randomize()
|
||||
m2[''] = m['']
|
||||
np.testing.assert_equal(m.log_likelihood(), m2.log_likelihood())
|
||||
np.testing.assert_almost_equal(m.log_likelihood(), m2.log_likelihood())
|
||||
|
||||
m.kern.lengthscale.randomize()
|
||||
m2[:] = m[:]
|
||||
np.testing.assert_equal(m.log_likelihood(), m2.log_likelihood())
|
||||
np.testing.assert_almost_equal(m.log_likelihood(), m2.log_likelihood())
|
||||
|
||||
m.Gaussian_noise.randomize()
|
||||
m2[:] = m[:]
|
||||
np.testing.assert_equal(m.log_likelihood(), m2.log_likelihood())
|
||||
np.testing.assert_almost_equal(m.log_likelihood(), m2.log_likelihood())
|
||||
|
||||
m['.*var'] = 2
|
||||
m2['.*var'] = m['.*var']
|
||||
np.testing.assert_equal(m.log_likelihood(), m2.log_likelihood())
|
||||
np.testing.assert_almost_equal(m.log_likelihood(), m2.log_likelihood())
|
||||
|
||||
|
||||
def test_likelihood_set(self):
|
||||
|
|
|
|||
|
|
@ -30,15 +30,15 @@ class Test(unittest.TestCase):
|
|||
self.par2 = ParameterizedTest('test model 2')
|
||||
self.p = Param('test parameter', numpy.random.normal(1,2,(10,3)))
|
||||
|
||||
self.par.add_parameter(self.p)
|
||||
self.par.add_parameter(Param('test1', numpy.random.normal(0,1,(1,))))
|
||||
self.par.add_parameter(Param('test2', numpy.random.normal(0,1,(1,))))
|
||||
self.par.link_parameter(self.p)
|
||||
self.par.link_parameter(Param('test1', numpy.random.normal(0,1,(1,))))
|
||||
self.par.link_parameter(Param('test2', numpy.random.normal(0,1,(1,))))
|
||||
|
||||
self.par2.add_parameter(Param('par2 test1', numpy.random.normal(0,1,(1,))))
|
||||
self.par2.add_parameter(Param('par2 test2', numpy.random.normal(0,1,(1,))))
|
||||
self.par2.link_parameter(Param('par2 test1', numpy.random.normal(0,1,(1,))))
|
||||
self.par2.link_parameter(Param('par2 test2', numpy.random.normal(0,1,(1,))))
|
||||
|
||||
self.parent.add_parameter(self.par)
|
||||
self.parent.add_parameter(self.par2)
|
||||
self.parent.link_parameter(self.par)
|
||||
self.parent.link_parameter(self.par2)
|
||||
|
||||
self._observer_triggered = None
|
||||
self._trigger_count = 0
|
||||
|
|
|
|||
|
|
@ -37,8 +37,8 @@ class ParameterizedTest(unittest.TestCase):
|
|||
self.test1 = GPy.core.Parameterized("test model")
|
||||
self.test1.param = self.param
|
||||
self.test1.kern = self.rbf+self.white
|
||||
self.test1.add_parameter(self.test1.kern)
|
||||
self.test1.add_parameter(self.param, 0)
|
||||
self.test1.link_parameter(self.test1.kern)
|
||||
self.test1.link_parameter(self.param, 0)
|
||||
# print self.test1:
|
||||
#=============================================================================
|
||||
# test_model. | Value | Constraint | Prior | Tied to
|
||||
|
|
@ -67,11 +67,11 @@ class ParameterizedTest(unittest.TestCase):
|
|||
|
||||
def test_fixes(self):
|
||||
self.white.fix(warning=False)
|
||||
self.test1.remove_parameter(self.param)
|
||||
self.test1.unlink_parameter(self.param)
|
||||
self.assertTrue(self.test1._has_fixes())
|
||||
from GPy.core.parameterization.transformations import FIXED, UNFIXED
|
||||
self.assertListEqual(self.test1._fixes_.tolist(),[UNFIXED,UNFIXED,FIXED])
|
||||
self.test1.kern.add_parameter(self.white, 0)
|
||||
self.test1.kern.link_parameter(self.white, 0)
|
||||
self.assertListEqual(self.test1._fixes_.tolist(),[FIXED,UNFIXED,UNFIXED])
|
||||
self.test1.kern.rbf.fix()
|
||||
self.assertListEqual(self.test1._fixes_.tolist(),[FIXED]*3)
|
||||
|
|
@ -82,7 +82,7 @@ class ParameterizedTest(unittest.TestCase):
|
|||
def test_remove_parameter(self):
|
||||
from GPy.core.parameterization.transformations import FIXED, UNFIXED, __fixed__, Logexp
|
||||
self.white.fix()
|
||||
self.test1.kern.remove_parameter(self.white)
|
||||
self.test1.kern.unlink_parameter(self.white)
|
||||
self.assertIs(self.test1._fixes_,None)
|
||||
|
||||
self.assertListEqual(self.white._fixes_.tolist(), [FIXED])
|
||||
|
|
@ -90,7 +90,7 @@ class ParameterizedTest(unittest.TestCase):
|
|||
self.assertIs(self.test1.constraints, self.rbf.constraints._param_index_ops)
|
||||
self.assertIs(self.test1.constraints, self.param.constraints._param_index_ops)
|
||||
|
||||
self.test1.add_parameter(self.white, 0)
|
||||
self.test1.link_parameter(self.white, 0)
|
||||
self.assertIs(self.test1.constraints, self.white.constraints._param_index_ops)
|
||||
self.assertIs(self.test1.constraints, self.rbf.constraints._param_index_ops)
|
||||
self.assertIs(self.test1.constraints, self.param.constraints._param_index_ops)
|
||||
|
|
@ -98,7 +98,7 @@ class ParameterizedTest(unittest.TestCase):
|
|||
self.assertIs(self.white._fixes_,None)
|
||||
self.assertListEqual(self.test1._fixes_.tolist(),[FIXED] + [UNFIXED] * 52)
|
||||
|
||||
self.test1.remove_parameter(self.white)
|
||||
self.test1.unlink_parameter(self.white)
|
||||
self.assertIs(self.test1._fixes_,None)
|
||||
self.assertListEqual(self.white._fixes_.tolist(), [FIXED])
|
||||
self.assertIs(self.test1.constraints, self.rbf.constraints._param_index_ops)
|
||||
|
|
@ -107,11 +107,11 @@ class ParameterizedTest(unittest.TestCase):
|
|||
|
||||
def test_remove_parameter_param_array_grad_array(self):
|
||||
val = self.test1.kern.param_array.copy()
|
||||
self.test1.kern.remove_parameter(self.white)
|
||||
self.test1.kern.unlink_parameter(self.white)
|
||||
self.assertListEqual(self.test1.kern.param_array.tolist(), val[:2].tolist())
|
||||
|
||||
def test_add_parameter_already_in_hirarchy(self):
|
||||
self.assertRaises(HierarchyError, self.test1.add_parameter, self.white.parameters[0])
|
||||
self.assertRaises(HierarchyError, self.test1.link_parameter, self.white.parameters[0])
|
||||
|
||||
def test_default_constraints(self):
|
||||
self.assertIs(self.rbf.variance.constraints._param_index_ops, self.rbf.constraints._param_index_ops)
|
||||
|
|
@ -119,7 +119,7 @@ class ParameterizedTest(unittest.TestCase):
|
|||
self.assertListEqual(self.rbf.constraints.indices()[0].tolist(), range(2))
|
||||
from GPy.core.parameterization.transformations import Logexp
|
||||
kern = self.test1.kern
|
||||
self.test1.remove_parameter(kern)
|
||||
self.test1.unlink_parameter(kern)
|
||||
self.assertListEqual(kern.constraints[Logexp()].tolist(), range(3))
|
||||
|
||||
def test_constraints(self):
|
||||
|
|
@ -127,7 +127,7 @@ class ParameterizedTest(unittest.TestCase):
|
|||
self.assertListEqual(self.test1.constraints[GPy.transformations.Square()].tolist(), range(self.param.size, self.param.size+self.rbf.size))
|
||||
self.assertListEqual(self.test1.constraints[GPy.transformations.Logexp()].tolist(), [self.param.size+self.rbf.size])
|
||||
|
||||
self.test1.kern.remove_parameter(self.rbf)
|
||||
self.test1.kern.unlink_parameter(self.rbf)
|
||||
self.assertListEqual(self.test1.constraints[GPy.transformations.Square()].tolist(), [])
|
||||
|
||||
def test_constraints_views(self):
|
||||
|
|
@ -143,8 +143,9 @@ class ParameterizedTest(unittest.TestCase):
|
|||
|
||||
def test_randomize(self):
|
||||
ps = self.test1.param.view(np.ndarray).copy()
|
||||
self.test1.param[2:5].fix()
|
||||
self.test1.param.randomize()
|
||||
self.assertFalse(np.all(ps==self.test1.param))
|
||||
self.assertFalse(np.all(ps==self.test1.param),str(ps)+str(self.test1.param))
|
||||
|
||||
def test_fixing_randomize_parameter_handling(self):
|
||||
self.rbf.fix(warning=True)
|
||||
|
|
@ -152,11 +153,12 @@ class ParameterizedTest(unittest.TestCase):
|
|||
self.test1.kern.randomize()
|
||||
self.assertEqual(val, self.rbf.variance)
|
||||
|
||||
def test_updates(self):
|
||||
self.test1.update_model(False)
|
||||
val = float(self.rbf.variance)
|
||||
self.test1.kern.randomize()
|
||||
self.assertEqual(val, self.rbf.variance)
|
||||
# def test_updates(self):
|
||||
# # WHAT DO YOU WANT TO TEST HERE?
|
||||
# self.test1.update_model(False)
|
||||
# val = float(self.rbf.variance)
|
||||
# self.test1.kern.randomize()
|
||||
# self.assertEqual(val, self.rbf.variance,str(self.test1))
|
||||
|
||||
def test_fixing_optimize(self):
|
||||
self.testmodel.kern.lengthscale.fix()
|
||||
|
|
@ -166,7 +168,7 @@ class ParameterizedTest(unittest.TestCase):
|
|||
|
||||
def test_add_parameter_in_hierarchy(self):
|
||||
from GPy.core import Param
|
||||
self.test1.kern.rbf.add_parameter(Param("NEW", np.random.rand(2), NegativeLogexp()), 1)
|
||||
self.test1.kern.rbf.link_parameter(Param("NEW", np.random.rand(2), NegativeLogexp()), 1)
|
||||
self.assertListEqual(self.test1.constraints[NegativeLogexp()].tolist(), range(self.param.size+1, self.param.size+1 + 2))
|
||||
self.assertListEqual(self.test1.constraints[GPy.transformations.Logistic(0,1)].tolist(), range(self.param.size))
|
||||
self.assertListEqual(self.test1.constraints[GPy.transformations.Logexp(0,1)].tolist(), np.r_[50, 53:55].tolist())
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ class Test(ListDictTestCase):
|
|||
par = toy_rbf_1d_50(optimize=0, plot=0)
|
||||
pcopy = par.copy()
|
||||
self.assertListEqual(par.param_array.tolist(), pcopy.param_array.tolist())
|
||||
self.assertListEqual(par.gradient_full.tolist(), pcopy.gradient_full.tolist())
|
||||
np.testing.assert_allclose(par.gradient_full, pcopy.gradient_full)
|
||||
self.assertSequenceEqual(str(par), str(pcopy))
|
||||
self.assertIsNot(par.param_array, pcopy.param_array)
|
||||
self.assertIsNot(par.gradient_full, pcopy.gradient_full)
|
||||
|
|
@ -141,7 +141,7 @@ class Test(ListDictTestCase):
|
|||
f.seek(0)
|
||||
pcopy = pickle.load(f)
|
||||
np.testing.assert_allclose(par.param_array, pcopy.param_array)
|
||||
np.testing.assert_allclose(par.gradient_full, pcopy.gradient_full)
|
||||
np.testing.assert_allclose(par.gradient_full, pcopy.gradient_full, atol=1e-6)
|
||||
self.assertSequenceEqual(str(par), str(pcopy))
|
||||
self.assert_(pcopy.checkgrad())
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue