I got the “Initialization failed” error while developing a model in PyStan3. It seemed to be impossible to debug this model since every time I would get the error, the prints in the Stan code would not show.
I then switched to Pystan 2.19 to see if it was about the version. I got the same problems in the stan code (init error), but I was able to debug them as pystan2 allowed me to debug by printing.
Once I fixed the bugs in the stan code, I tried to switch back to pystan3. However, same initialization failed error appears, and I am not able to print anything from the stan file in order to debug the problem. So now I have a working stan code in Pystan2 but same stan code will not work in Pystan3 due to Initialization failed error.
So the question is, how to print/debug from stan files using pystan3 when facing errors?
A simple example:
Pystan2:
import pystan
stan_code = """
parameters {
real<upper=0.0> y;
}
model{
print(y);
target += log(y);
}
"""
sm = pystan.StanModel(model_code=stan_code)
fit = sm.sampling(data={}, iter=1, chains=1)
Output:
INFO:pystan:COMPILING THE C++ CODE FOR MODEL anon_model_4d2aeabbf3bdd6f112cd0695ffd230cb NOW.
-0.238063
Rejecting initial value:
Log probability evaluates to log(0), i.e. negative infinity.
Stan can't start sampling from this initial value.
-1.7141
Rejecting initial value:
...
Initialization between (-2, 2) failed after 100 attempts.
Try specifying initial values, reducing ranges of constrained values, or reparameterizing the model.
Traceback (most recent call last):
...
RuntimeError: Initialization failed.
Pystan3:
import stan
stan_code = """
parameters {
real<upper=0.0> y;
}
model{
print(y);
target += log(y);
}
"""
posterior = stan.build(stan_code, data={})
fit = posterior.sample(num_chains=1, num_samples=1)
Output:
Building: 9.9s, done.
Sampling: Initialization failed.
Traceback (most recent call last):
...
RuntimeError: Initialization failed.
System details:
- Mac Monterey (M1)
- Python 3.8.12
- Pystan(s) 2.19.0.0 / 3.4.0
- Compiler Clang 10.0.0
ps. I launched the scripts from terminal, so notebook problems that seem to be frequent should not be the problem.