예제 #1
0
파일: test_param.py 프로젝트: zweien/GPflow
 def create_layout():
     p = gpflow.Parameterized(name='p')
     p.a = gpflow.Param(10.)
     p.b = gpflow.Param(11.)
     p.c = gpflow.Parameterized()
     p.c.d = gpflow.Param(12., fix_shape=False)
     p.c.e = gpflow.DataHolder(13.)
     return p
예제 #2
0
파일: test_param.py 프로젝트: zweien/GPflow
    def test_is_built(self):
        with self.test_context():
            p = gpflow.Parameterized()
            self.assertTrue(p.is_built_coherence())

            # TODO(@awav): Should it be NO?
            self.assertEqual(p.is_built_coherence(tf.Graph()),
                             gpflow.Build.YES)

            values = [None, "", 1.0, object()]
            for v in values:
                with self.assertRaises(ValueError,
                                       msg='Passed value {}'.format(v)):
                    p.is_built(v)

            p.a = gpflow.Param(1.0)
            self.assertEqual(p.is_built_coherence(), gpflow.Build.NO)

            p.compile()
            not_compatible = gpflow.Build.NOT_COMPATIBLE_GRAPH
            self.assertTrue(p.is_built_coherence())
            self.assertEqual(p.is_built(tf.Graph()), not_compatible)

            with self.assertRaises(GPflowError):
                p.is_built_coherence(tf.Graph())
            for v in values:
                with self.assertRaises(ValueError,
                                       msg='Passed value "{}"'.format(v)):
                    p.is_built(v)
예제 #3
0
파일: test_param.py 프로젝트: zweien/GPflow
    def test_str(self):
        with self.test_context():

            def check_str(obj, expect_str):
                expect = [
                    e for e in expect_str.format(name=p.name).split(' ')
                    if e != ''
                ]
                got = [e for e in str(obj).split(' ') if e != '']
                print(expect)
                print(got)
                self.assertEqual(expect, got)

            p_str = ('               class prior transform  trainable shape  '
                     'fixed_shape value\n{name}  Parameter  None    (none)'
                     '       True    ()         True   1.0')
            p = gpflow.Param(1., name="short")
            check_str(p, p_str)

            d_str = ('                 class shape  fixed_shape value'
                     '\n{name}  DataHolder    ()        False   1.0')
            d = gpflow.DataHolder(1., name="short")
            check_str(d, d_str)

            params_str = (
                '                     class prior transform  trainable shape'
                '  fixed_shape value\n{name}/p  Parameter  None'
                '    (none)       True    ()         True   1.0')
            params = gpflow.Parameterized(name="short")
            params.p = p
            params.d = d
            check_str(params, params_str)
예제 #4
0
    def deep_structure():
        a = gp.Param(1)
        b = gp.Param(2)
        c_a = gp.Param(3)
        c_b = gp.Param(4)

        with gp.defer_build():
            p = gp.Parameterized()
            p.c = gp.Parameterized()
            p.c.c = gp.Parameterized()
            p.c.c.a = gp.Param(3)
            p.c.c.b = gp.Param(4)
            p.a = a
            p.b = b
            p.c.a = c_a
            p.c.b = c_b

        p.compile()
        return p
 def test_nested_data_update(self):
     with self.test_context():
         p = gpflow.Parameterized()
         p.m = self.get_model()
         p.m.X = np.random.rand(11, 2)
         p.m.Y = np.random.rand(11, 1)
         p.clear()
         p.compile()
         self.assertTupleEqual(p.m.q_mu.shape, (11, 1))
         self.assertTupleEqual(p.m.q_sqrt.shape, (1, 11, 11))
예제 #6
0
파일: test_param.py 프로젝트: zweien/GPflow
 def test_anchor(self):
     with self.test_context() as session:
         p = gpflow.Parameterized()
         p.a = gpflow.Param(1.0)
         p.compile()
         with self.assertRaises(ValueError):
             p.anchor(None)
         new_value = 2.0
         p.a.parameter_tensor.load(new_value)
         p.anchor(session)
         assert_allclose(p.a.read_value(), new_value)
예제 #7
0
    def test_change_variable_size(self):
        with self.test_context() as session:
            m = gpflow.Parameterized()
            length = 10
            arr = np.random.randn(length, 2)
            m.X = gpflow.Minibatch(arr, shuffle=False)
            for i in range(length):
                assert_allclose(m.X.read_value(session=session), [arr[i]])

            length = 20
            arr = np.random.randn(length, 2)
            m.X = arr
            for i in range(length):
                assert_allclose(m.X.read_value(session=session), [arr[i]])
 def test_anchor(self):
     with self.test_context() as session:
         p = gpflow.Parameterized()
         p.a = gpflow.Param(1.0)
         p.compile()
         with self.assertRaises(ValueError):
             p.anchor(None)
         new_value = 2.0
         p.a.parameter_tensor.load(new_value)
         ops_count_before = len(session.graph.get_operations())
         p.anchor(session)
         ops_count_after = len(session.graph.get_operations())
         assert ops_count_before == ops_count_after, "regression test for #1001"
         assert_allclose(p.a.read_value(), new_value)
예제 #9
0
    def test_str(self):
        with self.test_context():
            p_str = ('               class prior transform  trainable shape  '
                     'fixed_shape value\nParameter  Parameter  None    (none)'
                     '       True    ()         True   1.0')
            p = gpflow.Param(1.)
            self.assertEqual(p_str.format('Parameter'), str(p))

            d_str = ('                 class shape  fixed_shape value'
                     '\nDataHolder  DataHolder    ()        False   1.0')
            d = gpflow.DataHolder(1.)
            self.assertEqual(d_str, str(d))

            params_str = ('                     class prior transform  trainable shape'
                          '  fixed_shape value\nParameterized/p  Parameter  None'
                          '    (none)       True    ()         True   1.0')
            params = gpflow.Parameterized()
            params.p = p
            params.d = d
            self.assertEqual(params_str, str(params))
예제 #10
0
파일: test_param.py 프로젝트: zweien/GPflow
 def test_feeds_empty(self):
     with self.test_context():
         p = gpflow.Parameterized()
         self.assertEqual(p.initializables, [])
         self.assertEqual(p.initializable_feeds, {})
         self.assertEqual(p.feeds, {})
예제 #11
0
파일: test_param.py 프로젝트: zweien/GPflow
def params_tree(session_tf):
    p = gpflow.Parameterized()
    p.a = gpflow.Param(1.)
    return p