Hi,
I am migrating my old codebase from PyMC 3.8 to PyMC 5.0.2. The function predictt()
from pm.gp.Marginal
is no longer working. See below:
with pm.Model() as model:
# reconstruct Gaussian process regression trained earlier
ls = gp_maxapos['ls']
cov = pm.gp.cov.ExpQuad(3, ls=ls)
gp = pm.gp.Marginal(cov_func=cov)
gp_pred = gp.marginal_likelihood('gp_pred', X=X_train, y=y_train, sigma=0.01)
# prepare the input tensor
a = pm.Normal('a', mu=np.mean(ranges['a']), sigma=10.0)
b = pm.Normal('b', mu=np.mean(ranges['b']), sigma=10.0)
x = pytensor.shared(df_data['x'].to_numpy())
X = pt.stack([x, pt.ones_like(x) * a, pt.ones_like(x) * b]).T
# define the output tensor
mu = pm.Deterministic('mu', gp.predictt(X)[0]) # NO LONGER WORKS!
f_pred = pm.Normal('f_pred', mu=mu, sigma=df_data['ferr'], observed=df_data['f'])
# sampling
trace = pm.sample(500, tune=1000, start=dict(), cores=4)
Is there any guide on how I should write it for PyMC5?
My understanding from PyMC3 was that, gp.predict()
was used to evaluate the predicted numerical values, whereas gp.predictt()
preserved the “tensor-ness” such that sampling could be performed (in this case, samples of a
and b
).
Thank you.