def test_rerouted_function(self, fn, args): """Tests rerouted function. Tests that a method of the internal optimizer is correctly routed from the BoltOn instance to the internal optimizer instance (TestOptimizer, here). Args: fn: fn to test args: arguments to that fn """ loss = TestLoss(1, 1, 1) optimizer = TestOptimizer() bolton = opt.BoltOn(optimizer, loss) model = TestModel(3) model.compile(optimizer, loss) model.layers[0].kernel = \ model.layers[0].kernel_initializer((model.layer_input_shape[0], model.n_outputs)) model.layers[0].kernel = \ model.layers[0].kernel_initializer((model.layer_input_shape[0], model.n_outputs)) bolton._is_init = True # pylint: disable=protected-access bolton.layers = model.layers bolton.epsilon = 2 bolton.noise_distribution = 'laplace' bolton.n_outputs = 1 bolton.n_samples = 1 self.assertEqual( getattr(bolton, fn, lambda: 'fn not found')(*args), 'test')
def test_fn(self, fn, args, result, test_attr): """test that a fn of BoltOn optimizer is working as expected. Args: fn: method of Optimizer to test args: args to optimizer fn result: the expected result test_attr: None if the fn returns the test result. Otherwise, this is the attribute of BoltOn to check against result with. """ tf.random.set_seed(1) loss = TestLoss(1, 1, 1) bolton = opt.BoltOn(TestOptimizer(), loss) model = TestModel(1) model.layers[0].kernel = \ model.layers[0].kernel_initializer((model.layer_input_shape[0], model.n_outputs)) bolton._is_init = True # pylint: disable=protected-access bolton.layers = model.layers bolton.epsilon = 2 bolton.noise_distribution = 'laplace' bolton.n_outputs = 1 bolton.n_samples = 1 res = getattr(bolton, fn, None)(*args) if test_attr is not None: res = getattr(bolton, test_attr, None) if hasattr(res, 'numpy') and hasattr(result, 'numpy'): # both tensors/not res = res.numpy() result = result.numpy() self.assertEqual(res, result)
def test_run(fn, args): loss = TestLoss(1, 1, 1) bolton = opt.BoltOn(TestOptimizer(), loss) model = TestModel(1, (1, ), 1) model.compile(bolton, loss) model.layers[0].kernel = \ model.layers[0].kernel_initializer((model.layer_input_shape[0], model.n_outputs)) getattr(bolton, fn)(*args)
def test_run(noise, epsilon): loss = TestLoss(1, 1, 1) bolton = opt.BoltOn(TestOptimizer(), loss) model = TestModel(1, (1, ), 1) model.compile(bolton, loss) model.layers[0].kernel = \ model.layers[0].kernel_initializer((model.layer_input_shape[0], model.n_outputs)) with bolton(noise, epsilon, model.layers, 1, 1, 1) as _: pass
def test_run(): loss = TestLoss(1, 1, 1) bolton = opt.BoltOn(TestOptimizer(), loss) model = TestModel(1, (1, ), 1) model.compile(bolton, loss) model.layers[0].kernel = \ model.layers[0].kernel_initializer((model.layer_input_shape[0], model.n_outputs)) with bolton(noise, epsilon, model.layers, class_weights, 1, 1) as _: pass return _ops.convert_to_tensor_v2(bolton.epsilon, dtype=tf.float32)
def test_attribute_error(self, attr): """Test rerouting of attributes. Test that attribute of internal optimizer is correctly rerouted to the internal optimizer Args: attr: attribute to test """ loss = TestLoss(1, 1, 1) internal_optimizer = TestOptimizer() optimizer = opt.BoltOn(internal_optimizer, loss) with self.assertRaises(AttributeError): getattr(optimizer, attr)
def test_reroute_attr(self, attr): """Test a function is rerouted. Test that attribute of internal optimizer is correctly rerouted to the internal optimizer. Args: attr: attribute to test """ loss = TestLoss(1, 1, 1) internal_optimizer = TestOptimizer() optimizer = opt.BoltOn(internal_optimizer, loss) self.assertEqual(getattr(optimizer, attr), getattr(internal_optimizer, attr))
def project_fn(r): loss = TestLoss(1, 1, r) bolton = opt.BoltOn(TestOptimizer(), loss) model = TestModel(n_out, shape, init_value) model.compile(bolton, loss) model.layers[0].kernel = \ model.layers[0].kernel_initializer((model.layer_input_shape[0], model.n_outputs)) bolton._is_init = True # pylint: disable=protected-access bolton.layers = model.layers bolton.epsilon = 2 bolton.noise_distribution = 'laplace' bolton.n_outputs = 1 bolton.n_samples = 1 bolton.project_weights_to_r() return _ops.convert_to_tensor_v2(bolton.layers[0].kernel, tf.float32)
def test_run(fn, args): loss = TestLoss(1, 1, 1) bolton = opt.BoltOn(TestOptimizer(), loss) model = TestModel(1, (1, ), 1) model.compile(bolton, loss) model.layers[0].kernel = \ model.layers[0].kernel_initializer((model.layer_input_shape[0], model.n_outputs)) bolton._is_init = True # pylint: disable=protected-access bolton.noise_distribution = 'laplace' bolton.epsilon = 1 bolton.layers = model.layers bolton.class_weights = 1 bolton.n_samples = 1 bolton.batch_size = 1 bolton.n_outputs = 1 res = getattr(bolton, fn, lambda: 'test')(*args) if res != 'test': res = 1 else: res = 0 return _ops.convert_to_tensor_v2(res, dtype=tf.float32)