Pm.sample_ppc breaks with AttributeError

You can not bound a deterministic. It would be easier to bound the ppc in the random generation:

ppc[ppc<1] = 1
ppc[ppc>70] = 70

For completeness, if you would like to bound the likelihood:

from pymc3.distributions.dist_math import bound
lower, upper = 1, 70
with pm.Model() as x2model:
    ...
    pm.Potential('logp', bound(
                               logsumexp(tt.log(w) +
                                         pm.Poisson.dist(mu).logp(x2obs), axis=-1).sum(), 
                               value >= lower, value <= upper)