Beispiel #1
0
    def test_loading_old_model(self):
        train_x, train_y = train_data(cuda=False)
        likelihood = GaussianLikelihood()
        model = SVGPRegressionModel(
            torch.linspace(0, 1, 25),
            gpytorch.variational.CholeskyVariationalDistribution)
        data_file = Path(__file__).parent.joinpath(
            "old_variational_strategy_model.pth").resolve()
        state_dicts = torch.load(data_file)
        likelihood.load_state_dict(state_dicts["likelihood"], strict=False)

        # Ensure we get a warning
        with warnings.catch_warnings(record=True) as ws:
            # Makes sure warnings we catch don't cause `-w error` to fail
            warnings.simplefilter("always", OldVersionWarning)

            model.load_state_dict(state_dicts["model"])
            self.assertTrue(
                any(issubclass(w.category, OldVersionWarning) for w in ws))

        with torch.no_grad():
            model.eval()
            likelihood.eval()
            test_preds = likelihood(model(train_x)).mean.squeeze()
            mean_abs_error = torch.mean(torch.abs(train_y - test_preds) / 2)
            self.assertLess(mean_abs_error.item(), 1e-1)
    def test_loading_old_model(self):
        train_x, train_y = train_data(cuda=False)
        likelihood = GaussianLikelihood()
        model = SVGPRegressionModel(
            torch.linspace(0, 1, 25),
            gpytorch.variational.CholeskyVariationalDistribution)
        state_dicts = torch.load(
            "test/examples/old_variational_strategy_model.pth")
        likelihood.load_state_dict(state_dicts["likelihood"], strict=False)

        # Ensure we get a warning
        with warnings.catch_warnings(record=True) as ws:
            model.load_state_dict(state_dicts["model"])
            self.assertTrue(
                any(issubclass(w.category, OldVersionWarning) for w in ws))

        with torch.no_grad():
            model.eval()
            likelihood.eval()
            test_preds = likelihood(model(train_x)).mean.squeeze()
            mean_abs_error = torch.mean(torch.abs(train_y - test_preds) / 2)
            self.assertLess(mean_abs_error.item(), 1e-1)