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
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)
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)
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))
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)
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)
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))
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, {})
def params_tree(session_tf): p = gpflow.Parameterized() p.a = gpflow.Param(1.) return p