Let’s say I have a simple model with shared variables to make out-of-sample predictions:

N=5000

p=2

batch_size=100

X=np.random.normal(0,1,(N,p))

b=np.random.uniform(0,0.1,p)

y=np.random.poisson(np.exp(X.dot(b)),N)model = pm.Model()

with model:`x0_s=shared(X[:,0]) x1_s=shared(X[:,1]) b0=pm.Normal('b0',mu=0,sd=.1) b1=pm.Normal('b1',mu=0,sd=.1) mu=pm.math.exp(b0*x0_s+b1*x1_s) y_=pm.Poisson('Y_obs',mu=mu,observed=y) approx=pm.fit(10000,method='ADVI') trace=approx.sample(1000)`

I need to save the fitted model and then to make prediction in a separate session.

I can easily pickle the trace and the model but how can I manage the shared variables?

One solution would be to redefine the model in the new session so that I have access to the shared variables but I would like to avoid that.

Any suggestions?

Thank you.