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)