Skip to content

Commit 12843d8

Browse files
committed
[Breaking Change] remove AdditiveStructureKernel and ProductStructureKernel
- The functionality of both kernels has not disappeared, but both kernels cannot work without the last_dim_is_batch_option. - The examples/00_Basic_Usage/kernels_with_additive_or_product_structure.ipynb notebook describes how to replicate the functionality of both kernels without last_dim_is_batch.
1 parent 8326781 commit 12843d8

File tree

6 files changed

+8
-195
lines changed

6 files changed

+8
-195
lines changed

docs/source/kernels.rst

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -119,24 +119,12 @@ Composition/Decoration Kernels
119119
.. autoclass:: MultiDeviceKernel
120120
:members:
121121

122-
:hidden:`AdditiveStructureKernel`
123-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
124-
125-
.. autoclass:: AdditiveStructureKernel
126-
:members:
127-
128122
:hidden:`ProductKernel`
129123
~~~~~~~~~~~~~~~~~~~~~~~~~
130124

131125
.. autoclass:: ProductKernel
132126
:members:
133127

134-
:hidden:`ProductStructureKernel`
135-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
136-
137-
.. autoclass:: ProductStructureKernel
138-
:members:
139-
140128
:hidden:`ScaleKernel`
141129
~~~~~~~~~~~~~~~~~~~~~~~~~
142130

gpytorch/kernels/__init__.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#!/usr/bin/env python3
22
from . import keops
3-
from .additive_structure_kernel import AdditiveStructureKernel
43
from .arc_kernel import ArcKernel
54
from .constant_kernel import ConstantKernel
65
from .cosine_kernel import CosineKernel
@@ -24,7 +23,6 @@
2423
from .piecewise_polynomial_kernel import PiecewisePolynomialKernel
2524
from .polynomial_kernel import PolynomialKernel
2625
from .polynomial_kernel_grad import PolynomialKernelGrad
27-
from .product_structure_kernel import ProductStructureKernel
2826
from .rbf_kernel import RBFKernel
2927
from .rbf_kernel_grad import RBFKernelGrad
3028
from .rbf_kernel_gradgrad import RBFKernelGradGrad
@@ -39,7 +37,6 @@
3937
"Kernel",
4038
"ArcKernel",
4139
"AdditiveKernel",
42-
"AdditiveStructureKernel",
4340
"ConstantKernel",
4441
"CylindricalKernel",
4542
"MultiDeviceKernel",
@@ -61,7 +58,6 @@
6158
"PolynomialKernel",
6259
"PolynomialKernelGrad",
6360
"ProductKernel",
64-
"ProductStructureKernel",
6561
"RBFKernel",
6662
"RFFKernel",
6763
"RBFKernelGrad",

gpytorch/kernels/additive_structure_kernel.py

Lines changed: 0 additions & 73 deletions
This file was deleted.

gpytorch/kernels/product_structure_kernel.py

Lines changed: 0 additions & 94 deletions
This file was deleted.

test/examples/test_kissgp_additive_regression.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
import gpytorch
1111
from gpytorch.distributions import MultivariateNormal
12-
from gpytorch.kernels import AdditiveStructureKernel, GridInterpolationKernel, RBFKernel, ScaleKernel
12+
from gpytorch.kernels import GridInterpolationKernel, RBFKernel, ScaleKernel
1313
from gpytorch.likelihoods import GaussianLikelihood
1414
from gpytorch.means import ZeroMean
1515

@@ -36,14 +36,12 @@ class GPRegressionModel(gpytorch.models.ExactGP):
3636
def __init__(self, train_x, train_y, likelihood):
3737
super(GPRegressionModel, self).__init__(train_x, train_y, likelihood)
3838
self.mean_module = ZeroMean()
39-
self.base_covar_module = ScaleKernel(RBFKernel(ard_num_dims=2))
40-
self.covar_module = AdditiveStructureKernel(
41-
GridInterpolationKernel(self.base_covar_module, grid_size=100, num_dims=1), num_dims=2
42-
)
39+
self.base_covar_module = ScaleKernel(RBFKernel(batch_shape=torch.Size([2])))
40+
self.covar_module = GridInterpolationKernel(self.base_covar_module, grid_size=100, num_dims=1)
4341

4442
def forward(self, x):
4543
mean_x = self.mean_module(x)
46-
covar_x = self.covar_module(x)
44+
covar_x = self.covar_module(x.mT[..., None]).sum(dim=-3)
4745
return MultivariateNormal(mean_x, covar_x)
4846

4947

test/examples/test_kissgp_multiplicative_regression.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
import gpytorch
1212
from gpytorch.distributions import MultivariateNormal
13-
from gpytorch.kernels import GridInterpolationKernel, ProductStructureKernel, RBFKernel, ScaleKernel
13+
from gpytorch.kernels import GridInterpolationKernel, RBFKernel, ScaleKernel
1414
from gpytorch.likelihoods import GaussianLikelihood
1515
from gpytorch.means import ConstantMean
1616
from gpytorch.priors import SmoothedBoxPrior
@@ -42,14 +42,12 @@ class GPRegressionModel(gpytorch.models.ExactGP):
4242
def __init__(self, train_x, train_y, likelihood):
4343
super(GPRegressionModel, self).__init__(train_x, train_y, likelihood)
4444
self.mean_module = ConstantMean(constant_prior=SmoothedBoxPrior(-1, 1))
45-
self.base_covar_module = ScaleKernel(RBFKernel())
46-
self.covar_module = ProductStructureKernel(
47-
GridInterpolationKernel(self.base_covar_module, grid_size=100, num_dims=1), num_dims=2
48-
)
45+
self.base_covar_module = ScaleKernel(RBFKernel(batch_shape=torch.Size([2])))
46+
self.covar_module = GridInterpolationKernel(self.base_covar_module, grid_size=100, num_dims=1)
4947

5048
def forward(self, x):
5149
mean_x = self.mean_module(x)
52-
covar_x = self.covar_module(x)
50+
covar_x = self.covar_module(x.mT[..., None]).prod(dim=-3)
5351
return MultivariateNormal(mean_x, covar_x)
5452

5553

0 commit comments

Comments
 (0)