Skip to content

Commit

Permalink
Update tests and assertions for compute_posteriors
Browse files Browse the repository at this point in the history
  • Loading branch information
jungtaekkim committed Oct 11, 2021
1 parent 290ce42 commit 9c00ea1
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 8 deletions.
20 changes: 20 additions & 0 deletions bayeso/bo/bo_w_gp.py
Expand Up @@ -210,6 +210,26 @@ def compute_posteriors(self,
"""

assert isinstance(X_train, np.ndarray)
assert isinstance(Y_train, np.ndarray)
assert isinstance(X_test, np.ndarray)
assert isinstance(cov_X_X, np.ndarray)
assert isinstance(inv_cov_X_X, np.ndarray)
assert isinstance(hyps, dict)
assert len(X_train.shape) == 2 or len(X_train.shape) == 3
assert len(Y_train.shape) == 2
assert len(X_test.shape) == 2 or len(X_test.shape) == 3
assert len(cov_X_X.shape) == 2
assert len(inv_cov_X_X.shape) == 2
assert Y_train.shape[1] == 1
assert X_train.shape[0] == Y_train.shape[0]
if len(X_train.shape) == 2:
assert X_test.shape[1] == X_train.shape[1] == self.num_dim
else:
assert X_test.shape[2] == X_train.shape[2] == self.num_dim
assert cov_X_X.shape[0] == cov_X_X.shape[1] == X_train.shape[0]
assert inv_cov_X_X.shape[0] == inv_cov_X_X.shape[1] == X_train.shape[0]

pred_mean, pred_std, _ = gp.predict_with_cov(
X_train, Y_train, X_test,
cov_X_X, inv_cov_X_X, hyps, str_cov=self.str_cov,
Expand Down
20 changes: 20 additions & 0 deletions bayeso/bo/bo_w_tp.py
Expand Up @@ -201,6 +201,26 @@ def compute_posteriors(self,
"""

assert isinstance(X_train, np.ndarray)
assert isinstance(Y_train, np.ndarray)
assert isinstance(X_test, np.ndarray)
assert isinstance(cov_X_X, np.ndarray)
assert isinstance(inv_cov_X_X, np.ndarray)
assert isinstance(hyps, dict)
assert len(X_train.shape) == 2 or len(X_train.shape) == 3
assert len(Y_train.shape) == 2
assert len(X_test.shape) == 2 or len(X_test.shape) == 3
assert len(cov_X_X.shape) == 2
assert len(inv_cov_X_X.shape) == 2
assert Y_train.shape[1] == 1
assert X_train.shape[0] == Y_train.shape[0]
if len(X_train.shape) == 2:
assert X_test.shape[1] == X_train.shape[1] == self.num_dim
else:
assert X_test.shape[2] == X_train.shape[2] == self.num_dim
assert cov_X_X.shape[0] == cov_X_X.shape[1] == X_train.shape[0]
assert inv_cov_X_X.shape[0] == inv_cov_X_X.shape[1] == X_train.shape[0]

_, pred_mean, pred_std, _ = tp.predict_with_cov(
X_train, Y_train, X_test,
cov_X_X, inv_cov_X_X, hyps, str_cov=self.str_cov,
Expand Down
18 changes: 10 additions & 8 deletions bayeso/bo/bo_w_trees.py
Expand Up @@ -85,7 +85,7 @@ def compute_posteriors(self,
"""
It returns posterior mean and standard deviation functions over `X`.
:param X: inputs. Shape: (l, d) or (l, m, d).
:param X: inputs. Shape: (l, d).
:type X: numpy.ndarray
:param cov_X_X: kernel matrix over `X_train`. Shape: (n, n).
:type cov_X_X: numpy.ndarray
Expand All @@ -100,6 +100,11 @@ def compute_posteriors(self,
"""

assert isinstance(X, np.ndarray)
assert isinstance(trees, list)
assert len(X.shape) == 2
assert X.shape[1] == self.num_dim

pred_mean, pred_std = trees_common.predict_by_trees(X, trees)

pred_mean = np.squeeze(pred_mean, axis=1)
Expand All @@ -115,9 +120,9 @@ def compute_acquisitions(self, X: np.ndarray,
It computes acquisition function values over 'X',
where `X_train` and `Y_train` are given.
:param X: inputs. Shape: (l, d) or (l, m, d).
:param X: inputs. Shape: (l, d).
:type X: numpy.ndarray
:param X_train: inputs. Shape: (n, d) or (n, m, d).
:param X_train: inputs. Shape: (n, d).
:type X_train: numpy.ndarray
:param Y_train: outputs. Shape: (n, 1).
:type Y_train: numpy.ndarray
Expand All @@ -139,10 +144,7 @@ def compute_acquisitions(self, X: np.ndarray,
if len(X.shape) == 1:
X = np.atleast_2d(X)

if len(X_train.shape) == 2:
assert X.shape[1] == X_train.shape[1] == self.num_dim
else:
assert X.shape[2] == X_train.shape[2] == self.num_dim
assert X.shape[1] == X_train.shape[1] == self.num_dim

fun_acquisition = utils_bo.choose_fun_acquisition(self.str_acq, constants.GP_NOISE)

Expand All @@ -165,7 +167,7 @@ def optimize(self, X_train: np.ndarray, Y_train: np.ndarray,
inverse matrix of the covariance matrix, hyperparameters optimized,
and execution times.
:param X_train: inputs. Shape: (n, d) or (n, m, d).
:param X_train: inputs. Shape: (n, d).
:type X_train: numpy.ndarray
:param Y_train: outputs. Shape: (n, 1).
:type Y_train: numpy.ndarray
Expand Down
6 changes: 6 additions & 0 deletions tests/common/test_bo_bo_w_trees.py
Expand Up @@ -682,3 +682,9 @@ def test_compute_acquisitions():
assert len(acqs.shape) == 1
assert X_test.shape[0] == acqs.shape[0]
assert np.all(np.abs(acqs - truth_acqs) < TEST_EPSILON)

acqs = model_bo.compute_acquisitions(X_test[0], X, Y, trees)

assert isinstance(acqs, np.ndarray)
assert len(acqs.shape) == 1
assert acqs.shape[0] == 1

0 comments on commit 9c00ea1

Please sign in to comment.