|
35 | 35 | from botorch.models.transforms import Normalize, Standardize |
36 | 36 | from botorch.posteriors import FullyBayesianPosterior |
37 | 37 | from botorch.sampling.samplers import IIDNormalSampler |
| 38 | +from botorch.utils.containers import TrainingData |
38 | 39 | from botorch.utils.multi_objective.box_decompositions.non_dominated import ( |
39 | 40 | NondominatedPartitioning, |
40 | 41 | ) |
@@ -360,3 +361,24 @@ def test_load_samples(self): |
360 | 361 | train_Yvar.clamp(MIN_INFERRED_NOISE_LEVEL), |
361 | 362 | ) |
362 | 363 | ) |
| 364 | + |
| 365 | + def test_construct_inputs(self): |
| 366 | + for infer_noise, dtype in itertools.product( |
| 367 | + (True, False), (torch.float, torch.double) |
| 368 | + ): |
| 369 | + tkwargs = {"device": self.device, "dtype": dtype} |
| 370 | + train_X, train_Y, train_Yvar, model = self._get_data_and_model( |
| 371 | + infer_noise=infer_noise, **tkwargs |
| 372 | + ) |
| 373 | + training_data = TrainingData.from_block_design( |
| 374 | + X=train_X, |
| 375 | + Y=train_Y, |
| 376 | + Yvar=train_Yvar, |
| 377 | + ) |
| 378 | + data_dict = model.construct_inputs(training_data) |
| 379 | + if infer_noise: |
| 380 | + self.assertTrue("train_Yvar" not in data_dict) |
| 381 | + else: |
| 382 | + self.assertTrue(torch.equal(data_dict["train_Yvar"], train_Yvar)) |
| 383 | + self.assertTrue(torch.equal(data_dict["train_X"], train_X)) |
| 384 | + self.assertTrue(torch.equal(data_dict["train_Y"], train_Y)) |
0 commit comments