Ejemplo n.º 1
0
class TestLowRank(unittest.TestCase):
    """test class for CLowRankCF"""
    def setUp(self):
        sp.random.seed(1)
        self.n = 4
        self.rank = 2
        self.C = LowRankCov(self.n,self.rank)
        self.name = 'lowrank'
        self.C.setRandomParams()

    def test_grad(self):
        def func(x, i):
            self.C.setParams(x)
            return self.C.K()

        def grad(x, i):
            self.C.setParams(x)
            return self.C.K_grad_i(i)

        x0 = self.C.getParams()
        err = mcheck_grad(func, grad, x0)

        np.testing.assert_almost_equal(err, 0., decimal = 6)

    def test_param_activation(self):
        self.assertEqual(len(self.C.getParams()), 8)
        self.C.act_X = False
        self.assertEqual(len(self.C.getParams()), 0)

        self.C.setParams(np.array([]))
        with self.assertRaises(ValueError):
            self.C.setParams(np.array([0]))

        with self.assertRaises(ValueError):
            self.C.K_grad_i(0)
Ejemplo n.º 2
0
class TestLowRank(unittest.TestCase):
    """test class for CLowRankCF"""
    def setUp(self):
        sp.random.seed(1)
        self.n = 4
        self.rank = 2
        self.C = LowRankCov(self.n, self.rank)
        self.name = 'lowrank'
        self.C.setRandomParams()

    def test_grad(self):
        def func(x, i):
            self.C.setParams(x)
            return self.C.K()

        def grad(x, i):
            self.C.setParams(x)
            return self.C.K_grad_i(i)

        x0 = self.C.getParams()
        err = mcheck_grad(func, grad, x0)

        np.testing.assert_almost_equal(err, 0., decimal=6)

    def test_param_activation(self):
        self.assertEqual(len(self.C.getParams()), 8)
        self.C.act_X = False
        self.assertEqual(len(self.C.getParams()), 0)

        self.C.setParams(np.array([]))
        with self.assertRaises(ValueError):
            self.C.setParams(np.array([0]))

        with self.assertRaises(ValueError):
            self.C.K_grad_i(0)
Ejemplo n.º 3
0
 def setColCovars(self, Cg=None, Cn=None, rank=1, Cr=None):
     assert Cg is not None, 'Cov2KronSum: Specify Cg!'
     assert Cn is not None, 'Cov2KronSum: Specify Cn!'
     assert Cg.dim==Cn.dim, 'Cov2KronSum: Cg and Cn must have same dimensions!'
     if Cr is None:
         Cr = LowRankCov(Cg.dim, rank)
         Cr.setRandomParams()
         self._rank_c = rank
     else:
         self._rank_c = Cr.X.shape[1]
     self._dim_c = Cg.dim
     self._Cr = Cr
     self._Cg = Cg
     self._Cn = Cn
     self._Cg.register(self.col_covs_have_changed)
     self._Cn.register(self.col_covs_have_changed)
     self.col_covs_have_changed()
Ejemplo n.º 4
0
 def setColCovars(self, Cg=None, Cn=None, rank=1, Cr=None):
     assert Cg is not None, 'Cov2KronSum: Specify Cg!'
     assert Cn is not None, 'Cov2KronSum: Specify Cn!'
     assert Cg.dim == Cn.dim, 'Cov2KronSum: Cg and Cn must have same dimensions!'
     if Cr is None:
         Cr = LowRankCov(Cg.dim, rank)
         Cr.setRandomParams()
         self._rank_c = rank
     else:
         self._rank_c = Cr.X.shape[1]
     self._dim_c = Cg.dim
     self._Cr = Cr
     self._Cg = Cg
     self._Cn = Cn
     self._Cg.register(self.col_covs_have_changed)
     self._Cn.register(self.col_covs_have_changed)
     self.col_covs_have_changed()
Ejemplo n.º 5
0
 def setColCovars(self, Cg=None, Cn=None, rank=1, Cr=None):
     assert Cg is not None, 'Cov2KronSum: Specify Cg!'
     assert Cn is not None, 'Cov2KronSum: Specify Cn!'
     assert Cg.dim==Cn.dim, 'Cov2KronSum: Cg and Cn must have same dimensions!'
     assert Cr is None, '%s: more general covariance matrices are not supported at the moment' % self.__class__.__name__
     if Cr is None:
         Cr = LowRankCov(Cg.dim, rank)
         Cr.setRandomParams()
         self._rank_c = rank
     else:
         self._rank_c = self.Cr.dim()
     self._dim_c = Cg.dim
     self._Cr = Cr
     self._Cg = Cg
     self._Cn = Cn
     self._Cg.register(self.col_covs_have_changed)
     self._Cn.register(self.col_covs_have_changed)
     self.col_covs_have_changed()