Non-stationary GP package written from scratch in PyTorch
Project description
NSGP-Torch
Examples
gpytorch
model with skgpytorch
# Import packages
import torch
from regdata import NonStat2D
from gpytorch.kernels import RBFKernel, ScaleKernel
from skgpytorch.models import ExactGPRegressor
from skgpytorch.metrics import mean_squared_error
# Hyperparameters
n_iters = 100
# Load data
datafunc = NonStat2D(backend="torch")
X_train, y_train, X_test = map(lambda x: x.to(torch.float32), datafunc.get_data())
y_test = datafunc.f(X_test[:, 0], X_test[:, 1]).to(torch.float32)
# Define a kernel
kernel = ScaleKernel(RBFKernel(ard_num_dims=X_train.shape[1]))
# Define a model
model = ExactGPRegressor(X_train, y_train, kernel, device='cpu')
# Train the model
model.fit(n_iters=n_iters, random_state=seed)
# Predict the distribution
pred_dist = model.predict(X_train, y_train, X_test)
# Compute RMSE and/or NLPD
mse = mean_squared_error(pred_dist, y_test, squared=False)
nlpd = neg_log_posterior_density(pred_dist, y_test)
nsgptorch
model with skgpytorch
# Import packages
import torch
from regdata import NonStat2D
from nsgptorch.kernels import rbf
from skgpytorch.models import ExactNSGPRegressor
from skgpytorch.metrics import mean_squared_error
# Hyperparameters
n_iters = 100
# Load data
datafunc = NonStat2D(backend="torch")
X_train, y_train, X_test = map(lambda x: x.to(torch.float32), datafunc.get_data())
y_test = datafunc.f(X_test[:, 0], X_test[:, 1]).to(torch.float32)
# Define a kernel list for each dimension
kernel_list = [rbf, rbf]
# Define inducing points for each dimension (must be none if not applicable)
inducing_points = [None, None]
# Define a model
model = ExactNSGPRegressor(kernel_list, input_dim=2, inducing_points, device='cpu')
# Train the model
model.fit(X_train, y_train, n_iters=n_iters, random_state=seed)
# Predict the distribution
pred_dist = model.predict(X_train, y_train, X_test)
# Compute RMSE and/or NLPD
mse = mean_squared_error(pred_dist, y_test, squared=False)
nlpd = neg_log_posterior_density(pred_dist, y_test)
Plan
- Each kernel is 1D
- Multiply kernels to each other
Ideas
- Compute distance once and save it
- Update skgpytorch to use 1 std instead of 0.1
- Do something about mean learning of gpytorch for comparison
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
nsgptorch-0.1.2.tar.gz
(7.3 kB
view details)
File details
Details for the file nsgptorch-0.1.2.tar.gz
.
File metadata
- Download URL: nsgptorch-0.1.2.tar.gz
- Upload date:
- Size: 7.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 354ada35852bac3ea02f6488a87b7e727ab53c48ac8fe95d5b798009c4dbc818 |
|
MD5 | 57e09fb32826e13f8ae067b1a522b081 |
|
BLAKE2b-256 | d10f53f20f1a351be5a0116929f795cd06aa522fb92e0bf7dfcad5bf5afa997b |