def test_negative_lower_confidence_bound_builder_builds_negative_lower_confidence_bound() -> None: model = QuadraticMeanAndRBFKernel() beta = 1.96 acq_fn = NegativeLowerConfidenceBound(beta).prepare_acquisition_function( Dataset(tf.zeros([0, 1]), tf.zeros([0, 1])), model ) query_at = tf.linspace([-10], [10], 100) expected = -lower_confidence_bound(model, beta, query_at) npt.assert_array_almost_equal(acq_fn(query_at), expected)
def test_negative_lower_confidence_bound_builder_builds_negative_lower_confidence_bound( ) -> None: model = QuadraticWithUnitVariance() beta = 1.96 acq_fn = NegativeLowerConfidenceBound(beta).prepare_acquisition_function( Dataset(tf.constant([[]]), tf.constant([[]])), model) query_at = tf.constant([[-3.], [-2.], [-1.], [0.], [1.], [2.], [3.]]) expected = -lower_confidence_bound(model, beta, query_at) npt.assert_array_almost_equal(acq_fn(query_at), expected)
def test_reducers_on_lcb(reducer): m = 6 beta = tf.convert_to_tensor(1.96, dtype=tf.float64) model = QuadraticWithUnitVariance() acqs = [NegativeLowerConfidenceBound(beta).using("foo") for _ in range(m)] acq = reducer.type_class(*acqs) acq_fn = acq.prepare_acquisition_function({"foo": reducer.dataset}, {"foo": model}) individual_lcb = [-lower_confidence_bound(model, beta, reducer.query_point) for _ in range(m)] expected = reducer.raw_reduce_op(individual_lcb) desired = acq_fn(reducer.query_point) np.testing.assert_array_almost_equal(expected, desired)
def test_lower_confidence_bound(beta: float) -> None: query_at = tf.constant([[-3.0], [-2.0], [-1.0], [0.0], [1.0], [2.0], [3.0]]) actual = lower_confidence_bound(QuadraticMeanAndRBFKernel(), beta, query_at) npt.assert_array_almost_equal(actual, query_at ** 2 - beta)
def test_lower_confidence_bound_raises_for_negative_beta(beta: float) -> None: with pytest.raises(ValueError): lower_confidence_bound(QuadraticMeanAndRBFKernel(), beta, tf.constant([[]]))
def test_lower_confidence_bound_raises_for_negative_beta(beta: float) -> None: with pytest.raises(ValueError): lower_confidence_bound(QuadraticWithUnitVariance(), beta, tf.constant([[]]))
def test_lower_confidence_bound(beta: float) -> None: query_at = tf.constant([[-3.], [-2.], [-1.], [0.], [1.], [2.], [3.]]) actual = lower_confidence_bound(QuadraticWithUnitVariance(), beta, query_at) npt.assert_array_almost_equal(actual, query_at**2 - beta)
def test_lower_confidence_bound_raises_for_negative_beta(beta: float) -> None: with pytest.raises(ValueError): lower_confidence_bound(MagicMock(ModelInterface), beta, tf.constant([[]]))
def test_lower_confidence_bound(beta: float) -> None: query_at = tf.linspace([[-3]], [[3]], 10) actual = lower_confidence_bound(QuadraticMeanAndRBFKernel(), beta)(query_at) npt.assert_array_almost_equal(actual, tf.squeeze(query_at, -2) ** 2 - beta)
def test_lower_confidence_bound_raises_for_invalid_batch_size(at: TensorType) -> None: lcb = lower_confidence_bound(QuadraticMeanAndRBFKernel(), tf.constant(1.0)) with pytest.raises(TF_DEBUGGING_ERROR_TYPES): lcb(at)