# Bad initial energy error

**URL:** <https://discourse.pymc.io/t/bad-initial-energy-error/7410>\
**Category:** Questions\
**Created:** [May 7, 2021, 1:05pm UTC](https://discourse.pymc.io/t/bad-initial-energy-error/7410 "2021-05-07T13:05:02Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![alireza](https://avatars.discourse-cdn.com/v4/letter/a/b77776/32.png) [@alireza](https://discourse.pymc.io/u/alireza)\
**Post date:** [May 7, 2021, 1:05pm UTC](https://discourse.pymc.io/t/bad-initial-energy-error/7410/1 "2021-05-07T13:05:03Z")

</div>

Hello, I am new to pymc3. I have model and am running into SamplingError: Bad initial energy.  
I am wondering how to solve this.  
Here is my code:  
data = [0]

from theano.tensor import sqrt as Sqrt  
from theano.tensor import log10 as log

with pm.Model() as model\_g:  
q = pm.Uniform(‘q’,lower=0.01, upper=0.9, transform=None)  
rz=pm.Uniform(‘rz’,lower=401, upper=7, transform=None)  
az = pm.Uniform(‘a/M’, lower=0, upper=0.8, transform=None)  
fr= pm.Normal(‘M/M\_s’, mu=5.4,sd=0.3)  
μ = pm.Deterministic(‘μ’, Sqrt(0.25\*(-441. + 4.774648292756861e7\*((0.0006814774430966335\*(1/rz)**1.5)/fr + (0.0006814774430966335\*az**2\*(1/rz)**4.5)/fr - (0.0006814774430966335_az)/(fr_rz**3) - (0.5_q_(1/rz)_1.5)/(2934.8fr - 1467.4frrz) - (1.qSqrt(1/rz)log(1. - 2./rz))/(2934.8fr - 1467.4frrz) + (2.q(1/rz)\*\*1.5log(1. - 2./rz))/(2934.8fr - 1467.4frrz)))\*\*2 + 100.(-17.3 + 3.e8(-0.00010846050367445505\*Sqrt(1/(fr __2\*rz__ 3)) - (0.00010846050367445505\*az__2\*Sqrt(1/(fr__2\*rz__3)))/rz__3 - (0.00016269075551168257\*az__2\*Sqrt(1/(fr__2\*rz__3)))/rz__2 + (0.00032538151102336503azfr__1.5\*Sqrt(1/(fr__2\*rz__3)))/(frrz)\*\*1.5 + (0.07957747154594767frqSqrt(1/(fr__2\*rz__3)))/(2934.8fr - 1467.4frrz) - (0.3183098861837907frqSqrt(1/(fr__2\*rz__3))\*log(1. + 1/((1. - 2./rz)\*rz__2)))/(2934.8fr - 1467.4frrz) + (0.15915494309189535frqSqrt(1/(fr __2\*rz__ 3))rzlog(1. + 1/((1. - 2./rz)\*rz__2)))/(2934.8fr - 1467.4frrz) - (0.3183098861837907frqSqrt(1/(fr__2\*rz__3))log(1. - 2./rz))/(2934.8fr - 1467.4frrz) + (0.15915494309189535frq\*Sqrt(1/(fr__2\*rz__3))rzlog(1. - 2./rz))/(2934.8fr - 1467.4frrz) + 0.15915494309189535((0.0006814774430966335\*(1/rz)**1.5)/fr + (0.0006814774430966335\*az**2\*(1/rz)**4.5)/fr - (0.0006814774430966335az)/(frrz**3) - (0.5q(1/rz)**1.5)/(2934.8fr - 1467.4frrz) - (1.qSqrt(1/rz)log(1. - 2./rz))/(2934.8fr - 1467.4frrz) + (2.q(1/rz)\*\*1.5log(1. - 2./rz))/(2934.8fr - 1467.4frrz))))2 + 0.0625(-298. + 3.e8((0.012464278062135641azfrSqrt(1/rz)Sqrt((-1.(8804.400000000001fr - 1467.4fr\*rz))/(fr**3\*rz__4)))/(8804.400000000001fr - 1467.4frrz) + (0.024928556124271282azfr(1/rz)**1.5Sqrt((-1.(8804.400000000001fr - 1467.4fr\*rz))/(fr**3\*rz__4)))/(8804.400000000001fr - 1467.4frrz) + (12.193387752251892fr__2qSqrt((-1.(8804.400000000001fr - 1467.4frrz))/(fr __3\*rz__ 4)))/((2934.8fr - 1467.4frrz)(8804.400000000001fr - 1467.4frrz)) - (3.048346938062973fr__2qrzSqrt((-1.(8804.400000000001fr - 1467.4fr\*rz))/(fr__3\*rz__4)))/((2934.8fr - 1467.4frrz)(8804.400000000001fr - 1467.4frrz)) - 2.831374781276553e-6Sqrt((-8804.400000000001fr + 1467.4fr\*rz)/(fr__3\*rz__4)) + (9.145040814188922\*az__2\*fr__2Sqrt((-8804.400000000001fr + 1467.4frrz)/(fr__3\*rz__4)))/(-8804.400000000001fr + 1467.4frrz)\*\*2 - (219.4809795405341az__2\*fr__2Sqrt((-8804.400000000001fr + 1467.4frrz)/(fr__3\*rz__4)))/(rz__3\*(-8804.400000000001fr + 1467.4frrz)\*\*2) - (73.16032651351138az __2\*fr__ 2Sqrt((-8804.400000000001fr + 1467.4frrz)/(fr __3\*rz__ 4)))/(rz__2\*(-8804.400000000001fr + 1467.4frrz)\*\*2) + (12.193387752251892az__2\*fr__2Sqrt((-8804.400000000001fr + 1467.4frrz)/(fr__3\*rz__4)))/(rz\*(-8804.400000000001fr + 1467.4frrz)\*\*2) - (73.16032651351138fr__2qSqrt((-1.(8804.400000000001fr - 1467.4frrz))/(fr __3\*rz__ 4))\*log(1. + 1/((1. - 2./rz)\*rz__2)))/((2934.8fr - 1467.4frrz)(8804.400000000001fr - 1467.4frrz)) + (48.77355100900757fr__2qrzSqrt((-1.(8804.400000000001fr - 1467.4fr\*rz))/(fr __3\*rz__ 4))\*log(1. + 1/((1. - 2./rz)\*rz__2)))/((2934.8fr - 1467.4frrz)(8804.400000000001fr - 1467.4frrz)) - (6.096693876125946fr__2qrz__2Sqrt((-1.(8804.400000000001fr - 1467.4fr\*rz))/(fr__3\*rz__4))\*log(1. + 1/((1. - 2./rz)\*rz__2)))/((2934.8fr - 1467.4frrz)(8804.400000000001fr - 1467.4frrz)) - (73.16032651351138fr__2qSqrt((-1.(8804.400000000001fr - 1467.4frrz))/(fr__3\*rz__4))log(1. - 2./rz))/((2934.8fr - 1467.4frrz)(8804.400000000001fr - 1467.4frrz)) + (48.77355100900757\*fr__2qrzSqrt((-1.(8804.400000000001fr - 1467.4fr\*rz))/(fr __3\*rz__ 4))log(1. - 2./rz))/((2934.8fr - 1467.4frrz)(8804.400000000001fr - 1467.4frrz)) - (6.096693876125946\*fr __2qrz__ 2Sqrt((-1.(8804.400000000001fr - 1467.4fr\*rz))/(fr__3\*rz_\*4))_log(1. - 2./rz))/((2934.8_fr - 1467.4_fr_rz)_(8804.400000000001_fr - 1467.4_fr_rz)) + 0.15915494309189535\*((0.0006814774430966335\*(1/rz)**1.5)/fr + (0.0006814774430966335\*az**2\*(1/rz)**4.5)/fr - (0.0006814774430966335_az)/(fr_rz**3) - (0.5_q_(1/rz)\*\*1.5)/(2934.8_fr - 1467.4_fr_rz) - (1.qSqrt(1/rz)log(1. - 2./rz))/(2934.8fr - 1467.4_fr_rz) + (2.q(1/rz)\*\*1.5_log(1. - 2./rz))/(2934.8_fr - 1467.4_fr\*rz))))\*\*2) )

```
y = pm.Normal('y', mu=μ, sd=1, observed=data)

trace= pm.sample(2000,target_accept=0.99,cores=1)

```

## Here is the error:

SamplingError Traceback (most recent call last)  
 in   
10 y = pm.Normal(‘y’, mu=μ, sd=1, observed=data)  
11 # trace= pm.sample(20000,target\_accept=0.99,chains=1,cores=1)  
—\> 12 trace= pm.sample(2000,target\_accept=0.99,cores=1)

~\anaconda3\lib\site-packages\pymc3\sampling.py in sample(draws, step, init, n\_init, start, trace, chain\_idx, chains, cores, tune, progressbar, model, random\_seed, discard\_tuned\_samples, compute\_convergence\_checks, \*\*kwargs)  
487 \_log.info(“Sequential sampling ({} chains in 1 job)”.format(chains))  
488 \_print\_step\_hierarchy(step)  
 → 489 trace = \_sample\_many(\*\*sample\_args)  
490  
491 discard = tune if discard\_tuned\_samples else 0

~\anaconda3\lib\site-packages\pymc3\sampling.py in \_sample\_many(draws, chain, chains, start, random\_seed, step, \*\*kwargs)  
531 traces =   
532 for i in range(chains):  
 → 533 trace = \_sample(  
534 draws=draws,  
535 chain=chain + i,

~\anaconda3\lib\site-packages\pymc3\sampling.py in \_sample(chain, progressbar, random\_seed, start, draws, step, trace, tune, model, \*\*kwargs)  
603 try:  
604 strace = None  
 → 605 for it, (strace, diverging) in enumerate(sampling):  
606 if it \>= skip\_first:  
607 trace = MultiTrace([strace])

~\anaconda3\lib\site-packages\tqdm\std.py in **iter** (self)  
1127  
1128 try:  
 → 1129 for obj in iterable:  
1130 yield obj  
1131 # Update and possibly print the progressbar.

~\anaconda3\lib\site-packages\pymc3\sampling.py in \_iter\_sample(draws, step, start, trace, chain, tune, model, random\_seed)  
698 step = stop\_tuning(step)  
699 if step.generates\_stats:  
 → 700 point, stats = step.step(point)  
701 if strace.supports\_sampler\_stats:  
702 strace.record(point, stats)

~\anaconda3\lib\site-packages\pymc3\step\_methods\arraystep.py in step(self, point)  
245  
246 if self.generates\_stats:  
 → 247 apoint, stats = self.astep(array)  
248 point = self.\_logp\_dlogp\_func.array\_to\_full\_dict(apoint)  
249 return point, stats

~\anaconda3\lib\site-packages\pymc3\step\_methods\hmc\base\_hmc.py in astep(self, q0)  
142 )  
143 self.\_warnings.append(warning)  
 → 144 raise SamplingError(“Bad initial energy”)  
145  
146 adapt\_step = self.tune and self.adapt\_step\_size

SamplingError: Bad initial energy

---

<div class="post-metadata">

**Author:** ![junpenglao](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.pymc.io/junpenglao/32/8_2.png) [@junpenglao](https://discourse.pymc.io/u/junpenglao)\
**Post date:** [May 8, 2021, 6:44am UTC](https://discourse.pymc.io/t/bad-initial-energy-error/7410/2 "2021-05-08T06:44:06Z")

</div>

Have you try the solution in FAQ?

> [@Frequently Asked Questions](https://discourse.pymc.io/t/frequently-asked-questions/74/5):
>
> Getting NaN or Inf during NUTS or VI (e.g., 'Bad initial energy: inf. The model might be misspecified., NaN occurred in optimization.)

> [@Getting 'Bad initial energy: inf' when trying to sample simple model](https://discourse.pymc.io/t/getting-bad-initial-energy-inf-when-trying-to-sample-simple-model/364/2):
>
> Hi @Stargrazer82301, this is actually one of our FAQs. You can have a look at the answer here: For example, in your case, running: for RV in model.basic\_RVs: print(RV.name, RV.logp(model.test\_point)) gives: Intercept 1.1370228148748596 Gradient -inf Psi\_log\_\_ -0.7257913526447277 z\_likelihood 73.49976264100106 And looking closer at gradient: gradient = pm.Normal('Gradient', mu=leastsq\_fit[0], sd=leastsq\_fit[0], testval=leastsq\_fit[0]) You can see that sd is defined as leastsq\_fit[0], …

---

<div class="post-metadata">

**Author:** ![twiecki](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.pymc.io/twiecki/32/6930_2.png) [@twiecki](https://discourse.pymc.io/u/twiecki)\
**Post date:** [May 11, 2021, 9:11am UTC](https://discourse.pymc.io/t/bad-initial-energy-error/7410/3 "2021-05-11T09:11:43Z")

</div>

Your code is impossible to read, can you edit and format it so that it displays correctly?
