def test_mean_function_VSGP(): X, y, Xnew, ynew, kernel, mean_fn = _pre_test_mean_function() Xu = X[::20].clone() likelihood = Gaussian() gpmodule = VariationalSparseGP(X, y, kernel, Xu, likelihood, mean_function=mean_fn) optimizer = torch.optim.Adam(gpmodule.parameters(), lr=0.02) train(gpmodule, optimizer) _post_test_mean_function(gpmodule, Xnew, ynew)
def test_inference_vsgp(): N = 1000 X = dist.Uniform(torch.zeros(N), torch.ones(N)*5).sample() y = 0.5 * torch.sin(3*X) + dist.Normal(torch.zeros(N), torch.ones(N)*0.5).sample() kernel = RBF(input_dim=1) Xu = torch.arange(0., 5.5, 0.5) vsgp = VariationalSparseGP(X, y, kernel, Xu, Gaussian()) optimizer = torch.optim.Adam(vsgp.parameters(), lr=0.03) train(vsgp, optimizer) Xnew = torch.arange(0., 5.05, 0.05) loc, var = vsgp(Xnew, full_cov=False) target = 0.5 * torch.sin(3*Xnew) assert_equal((loc - target).abs().mean().item(), 0, prec=0.06)