Hello! Thanks for the great framework!
I’ve been trying to implement a Relevance Vector Machine using Pyro. I have a problem regarding the basis function expansion.
When I apply the kernel over the input variables, it return a Tensor with the following shape:
Following the RVM approach, I need a unique hyperparameter for each vector, so I sample a gamma distribution and expand it to the X.shape dimensions. The training is done via MCMC.
The problem is on test time. As the model expects a Tensor with the same number of “rows” as the trainning set, I am unable to do inference on new data.
Here is my model:
def model(X, y=None): b0 = pyro.sample('b0', dist.Normal(0, 10)) rbf = gp.kernels.RBF(input_dim=1, lengthscale=torch.ones(1)) inv_sigma = pyro.sample('inv_sigma', dist.Gamma(1e-4, 1e-4)) k = rbf(X, X) with pyro.plate('data', X.shape): gamma = pyro.sample('gamma', dist.Gamma(1e-4, 1e-4)) alpha = pyro.sample('alpha', dist.Gamma(1e-4, gamma)) beta = pyro.sample('beta', dist.Normal(0, alpha)) mu = pyro.deterministic('mu', b0.float() + torch.matmul(k.float(), beta.float())) pyro.sample('obs', dist.Normal(mu, inv_sigma), obs=y)
How can I change my model so I am able to to inference?
Maybe I am missing some really simple detail.