Skip to content

Commit 2829e2a

Browse files
Balandatfacebook-github-bot
authored andcommitted
Fix unit tests failues caused by upstream breaking changes (#1343)
Summary: cornellius-gp/gpytorch#2082 changed the shape of the mean constant (and did some other things). These changes fix the resulting unit test breakages. Pull Request resolved: #1343 Reviewed By: saitcakmak Differential Revision: D38527688 Pulled By: Balandat fbshipit-source-id: a9878b3ff5d045b18c3330f4e0707a3ee4be2553
1 parent 6d86997 commit 2829e2a

File tree

8 files changed

+42
-39
lines changed

8 files changed

+42
-39
lines changed

botorch/models/gp_regression.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ def __init__(
156156
)
157157
self._subset_batch_dict = {
158158
"likelihood.noise_covar.raw_noise": -2,
159-
"mean_module.constant": -2,
159+
"mean_module.raw_constant": -1,
160160
"covar_module.raw_outputscale": -1,
161161
"covar_module.base_kernel.raw_lengthscale": -3,
162162
}
@@ -271,7 +271,7 @@ def __init__(
271271
outputscale_prior=GammaPrior(2.0, 0.15),
272272
)
273273
self._subset_batch_dict = {
274-
"mean_module.constant": -2,
274+
"mean_module.raw_constant": -1,
275275
"covar_module.raw_outputscale": -1,
276276
"covar_module.base_kernel.raw_lengthscale": -3,
277277
}

botorch/models/gp_regression_fidelity.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ def __init__(
131131
)
132132
self._subset_batch_dict = {
133133
"likelihood.noise_covar.raw_noise": -2,
134-
"mean_module.constant": -2,
134+
"mean_module.raw_constant": -1,
135135
"covar_module.raw_outputscale": -1,
136136
**subset_batch_dict,
137137
}
@@ -240,7 +240,7 @@ def __init__(
240240
)
241241
self._subset_batch_dict = {
242242
"likelihood.noise_covar.raw_noise": -2,
243-
"mean_module.constant": -2,
243+
"mean_module.raw_constant": -1,
244244
"covar_module.raw_outputscale": -1,
245245
**subset_batch_dict,
246246
}

test/acquisition/test_monte_carlo.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -443,8 +443,8 @@ def test_cache_root(self):
443443
"likelihood.noise_covar.raw_noise": torch.tensor(
444444
[[0.0895], [0.2594]], dtype=torch.float64
445445
),
446-
"mean_module.constant": torch.tensor(
447-
[[-0.4545], [-0.1285]], dtype=torch.float64
446+
"mean_module.raw_constant": torch.tensor(
447+
[-0.4545, -0.1285], dtype=torch.float64
448448
),
449449
"covar_module.raw_outputscale": torch.tensor(
450450
[1.4876, 1.4897], dtype=torch.float64

test/models/test_contextual.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from gpytorch.mlls.exact_marginal_log_likelihood import ExactMarginalLogLikelihood
1818

1919

20-
class ContextualGPTest(BotorchTestCase):
20+
class TestContextualGP(BotorchTestCase):
2121
def test_SACGP(self):
2222
for dtype in (torch.float, torch.double):
2323
train_X = torch.tensor(
@@ -45,7 +45,7 @@ def test_SACGP(self):
4545
num_of_lengthscales = 0
4646
num_of_outputscales = 0
4747
for param_name, param in model.named_parameters():
48-
if param_name == "mean_module.constant":
48+
if param_name == "mean_module.raw_constant":
4949
num_of_mean += param.data.shape.numel()
5050
elif "raw_lengthscale" in param_name:
5151
num_of_lengthscales += param.data.shape.numel()

test/models/test_fully_bayesian.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ def _get_mcmc_samples(
9696
mcmc_samples = {
9797
"lengthscale": torch.rand(num_samples, 1, dim, **tkwargs),
9898
"outputscale": torch.rand(num_samples, **tkwargs),
99-
"mean": torch.randn(num_samples, 1, **tkwargs),
99+
"mean": torch.randn(num_samples, **tkwargs),
100100
}
101101
if infer_noise:
102102
mcmc_samples["noise"] = torch.rand(num_samples, 1, **tkwargs)
@@ -190,7 +190,7 @@ def test_fit_model(self):
190190
model, warmup_steps=8, num_samples=5, thinning=2, disable_progbar=True
191191
)
192192
self.assertIsInstance(model.mean_module, ConstantMean)
193-
self.assertEqual(model.mean_module.constant.shape, torch.Size([3, 1]))
193+
self.assertEqual(model.mean_module.raw_constant.shape, torch.Size([3]))
194194
self.assertIsInstance(model.covar_module, ScaleKernel)
195195
self.assertEqual(model.covar_module.outputscale.shape, torch.Size([3]))
196196
self.assertIsInstance(model.covar_module.base_kernel, MaternKernel)
@@ -465,7 +465,7 @@ def test_load_samples(self):
465465
)
466466
self.assertTrue(
467467
torch.allclose(
468-
model.mean_module.constant.data,
468+
model.mean_module.raw_constant.data,
469469
mcmc_samples["mean"],
470470
)
471471
)

test/optim/test_numpy_converter.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def test_basic(self):
4343
expected_sizes = {
4444
"likelihood.noise_covar.raw_noise": torch.Size([1]),
4545
"model.covar_module.raw_lengthscale": torch.Size([1, 3]),
46-
"model.mean_module.constant": torch.Size([1]),
46+
"model.mean_module.raw_constant": torch.Size(),
4747
}
4848
self.assertEqual(set(pdict.keys()), set(expected_sizes.keys()))
4949
for pname, val in pdict.items():
@@ -65,7 +65,7 @@ def test_exclude(self):
6565
mll = ExactMarginalLogLikelihood(likelihood, model)
6666
# test the basic case
6767
x, pdict, bounds = module_to_array(
68-
module=mll, exclude={"model.mean_module.constant"}
68+
module=mll, exclude={"model.mean_module.raw_constant"}
6969
)
7070
self.assertTrue(np.array_equal(x, np.zeros(4)))
7171
expected_sizes = {
@@ -98,15 +98,18 @@ def test_manual_bounds(self):
9898
expected_sizes = {
9999
"likelihood.noise_covar.raw_noise": torch.Size([1]),
100100
"model.covar_module.raw_lengthscale": torch.Size([1, 3]),
101-
"model.mean_module.constant": torch.Size([1]),
101+
"model.mean_module.raw_constant": torch.Size(),
102102
}
103103
self.assertEqual(set(pdict.keys()), set(expected_sizes.keys()))
104104
for pname, val in pdict.items():
105105
self.assertEqual(val.dtype, dtype)
106106
self.assertEqual(val.shape, expected_sizes[pname])
107107
self.assertEqual(val.device.type, self.device.type)
108108
lower_exp = np.full_like(x, 0.1)
109-
for p in ("likelihood.noise_covar.raw_noise", "model.mean_module.constant"):
109+
for p in (
110+
"likelihood.noise_covar.raw_noise",
111+
"model.mean_module.raw_constant",
112+
):
110113
lower_exp[_get_index(pdict, p)] = -np.inf
111114
self.assertTrue(np.equal(bounds[0], lower_exp).all())
112115
self.assertTrue(np.equal(bounds[1], np.full_like(x, np.inf)).all())
@@ -132,15 +135,15 @@ def test_module_bounds(self):
132135
expected_sizes = {
133136
"likelihood.noise_covar.raw_noise": torch.Size([1]),
134137
"model.covar_module.raw_lengthscale": torch.Size([1, 3]),
135-
"model.mean_module.constant": torch.Size([1]),
138+
"model.mean_module.raw_constant": torch.Size(),
136139
}
137140
self.assertEqual(set(pdict.keys()), set(expected_sizes.keys()))
138141
for pname, val in pdict.items():
139142
self.assertEqual(val.dtype, dtype)
140143
self.assertEqual(val.shape, expected_sizes[pname])
141144
self.assertEqual(val.device.type, self.device.type)
142145
lower_exp = np.full_like(x, 0.1)
143-
lower_exp[_get_index(pdict, "model.mean_module.constant")] = -np.inf
146+
lower_exp[_get_index(pdict, "model.mean_module.raw_constant")] = -np.inf
144147
lower_exp[_get_index(pdict, "likelihood.noise_covar.raw_noise")] = 1e-5
145148
self.assertTrue(np.allclose(bounds[0], lower_exp))
146149
self.assertTrue(np.equal(bounds[1], np.full_like(x, np.inf)).all())
@@ -178,8 +181,8 @@ def test_set_parameters(self):
178181
)
179182
self.assertTrue(
180183
torch.equal(
181-
z["model.mean_module.constant"],
182-
torch.tensor([5.0], device=self.device, dtype=dtype),
184+
z["model.mean_module.raw_constant"],
185+
torch.tensor(5.0, device=self.device, dtype=dtype),
183186
)
184187
)
185188

test/test_fit.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ def test_fit_gpytorch_model(self, optimizer=fit_gpytorch_scipy):
105105
model = mll.model
106106
# Make sure all of the parameters changed
107107
self.assertGreater(model.likelihood.raw_noise.abs().item(), 1e-3)
108-
self.assertLess(model.mean_module.constant.abs().item(), 0.1)
108+
self.assertLess(model.mean_module.raw_constant.abs().item(), 0.1)
109109
self.assertGreater(
110110
model.covar_module.base_kernel.raw_lengthscale.abs().item(), 0.1
111111
)
@@ -123,7 +123,7 @@ def test_fit_gpytorch_model(self, optimizer=fit_gpytorch_scipy):
123123

124124
model = mll.model
125125
self.assertGreaterEqual(model.likelihood.raw_noise.abs().item(), 1e-1)
126-
self.assertLess(model.mean_module.constant.abs().item(), 0.1)
126+
self.assertLess(model.mean_module.raw_constant.abs().item(), 0.1)
127127
self.assertGreater(
128128
model.covar_module.base_kernel.raw_lengthscale.abs().item(), 0.1
129129
)
@@ -176,10 +176,10 @@ def test_fit_gpytorch_model(self, optimizer=fit_gpytorch_scipy):
176176

177177
# test excluding a parameter
178178
mll = self._getModel(double=double)
179-
original_raw_noise = mll.model.likelihood.noise_covar.raw_noise.item()
180-
original_mean_module_constant = mll.model.mean_module.constant.item()
179+
orig_raw_noise = mll.model.likelihood.noise_covar.raw_noise.item()
180+
orig_mean_module_raw_constant = mll.model.mean_module.raw_constant.item()
181181
options["exclude"] = [
182-
"model.mean_module.constant",
182+
"model.mean_module.raw_constant",
183183
"likelihood.noise_covar.raw_noise",
184184
]
185185
mll = fit_gpytorch_model(
@@ -188,10 +188,10 @@ def test_fit_gpytorch_model(self, optimizer=fit_gpytorch_scipy):
188188
model = mll.model
189189
# Make excluded params did not change
190190
self.assertEqual(
191-
model.likelihood.noise_covar.raw_noise.item(), original_raw_noise
191+
model.likelihood.noise_covar.raw_noise.item(), orig_raw_noise
192192
)
193193
self.assertEqual(
194-
model.mean_module.constant.item(), original_mean_module_constant
194+
model.mean_module.raw_constant.item(), orig_mean_module_raw_constant
195195
)
196196
# Make sure other params did change
197197
self.assertGreater(
@@ -212,7 +212,7 @@ def test_fit_gpytorch_model(self, optimizer=fit_gpytorch_scipy):
212212
model = mll.model
213213
# Make sure all of the parameters changed
214214
self.assertGreater(model.likelihood.raw_noise.abs().item(), 1e-3)
215-
self.assertLess(model.mean_module.constant.abs().item(), 0.1)
215+
self.assertLess(model.mean_module.raw_constant.abs().item(), 0.1)
216216
self.assertGreater(
217217
model.covar_module.base_kernel.raw_lengthscale.abs().item(), 0.1
218218
)

test/utils/test_gp_sampling.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def _get_model(
7474
1.1000, **tkwargs
7575
),
7676
"likelihood.noise_covar.noise_prior.rate": torch.tensor(0.0500, **tkwargs),
77-
"mean_module.constant": torch.tensor([0.1398], **tkwargs),
77+
"mean_module.raw_constant": torch.tensor(0.1398, **tkwargs),
7878
"covar_module.raw_outputscale": torch.tensor(0.6933, **tkwargs),
7979
"covar_module.base_kernel.raw_lengthscale": torch.tensor(
8080
[[-0.0444]], **tkwargs
@@ -111,8 +111,8 @@ def _get_model(
111111
torch.tensor([0.0745], **tkwargs),
112112
]
113113
)
114-
state_dict["mean_module.constant"] = torch.stack(
115-
[state_dict["mean_module.constant"], torch.tensor([0.3276], **tkwargs)]
114+
state_dict["mean_module.raw_constant"] = torch.stack(
115+
[state_dict["mean_module.raw_constant"], torch.tensor(0.3276, **tkwargs)]
116116
)
117117
state_dict["covar_module.raw_outputscale"] = torch.stack(
118118
[
@@ -134,7 +134,7 @@ def _get_model(
134134
state_dict["likelihood.noise_covar.raw_noise"] = torch.tensor(
135135
[[0.0214], [0.001]], **tkwargs
136136
)
137-
state_dict["mean_module.constant"] = torch.tensor([[0.1398], [0.5]], **tkwargs)
137+
state_dict["mean_module.raw_constant"] = torch.tensor([0.1398, 0.5], **tkwargs)
138138
state_dict["covar_module.raw_outputscale"] = torch.tensor(
139139
[0.6933, 1.0], **tkwargs
140140
)
@@ -153,8 +153,8 @@ def _get_model(
153153
state_dict["likelihood.noise_covar.raw_noise"] = torch.tensor(
154154
[[0.1743], [0.3132]] if multi_output else [0.1743], **tkwargs
155155
)
156-
state_dict["mean_module.constant"] = torch.tensor(
157-
[[0.2560], [0.6714]] if multi_output else [0.2555], **tkwargs
156+
state_dict["mean_module.raw_constant"] = torch.tensor(
157+
[0.2560, 0.6714] if multi_output else 0.2555, **tkwargs
158158
)
159159
state_dict["covar_module.raw_outputscale"] = torch.tensor(
160160
[2.4396, 2.6821] if multi_output else 2.4398, **tkwargs
@@ -187,15 +187,15 @@ def test_gp_draw_single_output(self):
187187
for dtype in (torch.float, torch.double):
188188
tkwargs = {"device": self.device, "dtype": dtype}
189189
model, _, _ = _get_model(**tkwargs)
190-
mean = model.mean_module.constant.detach().clone()
190+
mean = model.mean_module.raw_constant.detach().clone()
191191
gp = GPDraw(model)
192192
# test initialization
193193
self.assertIsNone(gp.Xs)
194194
self.assertIsNone(gp.Ys)
195195
self.assertIsNotNone(gp._seed)
196196
# make sure model is actually deepcopied
197-
model.mean_module.constant = None
198-
self.assertTrue(torch.equal(gp._model.mean_module.constant, mean))
197+
model.mean_module.constant = float("inf")
198+
self.assertTrue(torch.equal(gp._model.mean_module.raw_constant, mean))
199199
# test basic functionality
200200
test_X1 = torch.rand(1, 1, **tkwargs, requires_grad=True)
201201
Y1 = gp(test_X1)
@@ -234,14 +234,14 @@ def test_gp_draw_multi_output(self):
234234
for dtype in (torch.float, torch.double):
235235
tkwargs = {"device": self.device, "dtype": dtype}
236236
model, _, _ = _get_model(**tkwargs, multi_output=True)
237-
mean = model.mean_module.constant.detach().clone()
237+
mean = model.mean_module.raw_constant.detach().clone()
238238
gp = GPDraw(model)
239239
# test initialization
240240
self.assertIsNone(gp.Xs)
241241
self.assertIsNone(gp.Ys)
242242
# make sure model is actually deepcopied
243-
model.mean_module.constant = None
244-
self.assertTrue(torch.equal(gp._model.mean_module.constant, mean))
243+
model.mean_module.constant = float("inf")
244+
self.assertTrue(torch.equal(gp._model.mean_module.raw_constant, mean))
245245
# test basic functionality
246246
test_X1 = torch.rand(1, 1, **tkwargs, requires_grad=True)
247247
Y1 = gp(test_X1)

0 commit comments

Comments
 (0)