Hello,
I’m currently working on a PyMC model where I’m trying to initialize values for a Beta distribution to ensure that a custom penalty potential does not evaluate to -inf. Here is the code snippet:
n = 3
with pm.Model() as model:
tau_latent = pm.Beta('tau_latent',
alpha=1,
beta=1,
shape=n,
initval=(np.linspace(0 + 0.1,
1. - 0.1, n))
)
pm.Potential(
"penalty_last_one",
pm.math.switch(
pt.any(pt.lt(tau_latent[-1] - 1.0, 0.1)), -np.inf,
0
))
I have configured the initval for tau_latent in such a way that I expect the penalty_last_one potential to not result in -inf. However, I still encounter a SamplingError indicating that the initial evaluation of the model at the starting point failed, specifically mentioning that 'penalty_last_one': -inf.
The starting values provided in the error message are as follows: {'tau_latent_logodds__': array([-4.36858715, -1.53270918, -0.31507496, 0.73444259, 2.08084293])}.
When attempting to convert these log-odds back to probabilities using np.exp, it seems it might not be correctly calculating the initial values. Could someone help clarify the correct approach to set the initval for the Beta distribution in this context, ensuring the custom potential does not return -inf?
Thank you for your assistance