I unmarked the solution, as I found the advi was also buggy. It initialises with values but then the sampling doesn’t change the values, so it passes though I get 1 as acceptance prob. and non-meaningful results with n spikes where n is number of chains initialised at different values.
I tried a few other inits using this simple test;
import pymc3 as pm
pm.__version__
import numpy as np
np.__version__
import theano
theano.__version__
from theano.printing import Print as tt_print
with pm.Model() as model:
mu = pm.Normal('mu', mu=0, sigma=1)
mu_p = tt_print('mu')(mu)
obs = pm.Normal('obs', mu=mu_p, sigma=1, observed=np.random.randn(100))
trace = pm.sample(1000,tune=500, init=<choices>)
And I get that;
adapt_diag: Fail, mu is all zeros,
jitter+adapt_diag: Fail, mu is two values alternating (two chains?), recurring
advi+adapt_diag: ADVI: Success, Sampling: Fail, mu is one of two values altern. recurr.
advi+adapt_diag_grad: same as advi+adapt_diag
advi: ADVI:Success, Sampling: passes but mu values alternate between two, so trace is not meaningful, ie; acceptance probability ==1.
advi_map: as per advi.
Agree it may not be a branch problem, but is it possible something relied upon is unavailable silently for me? Being newly set up machines I may not have some basic libraries which haven’t shown themselves as missing through other activities yet?
Is there something to provide more verbose debug I could include in the test sampling…?