У меня есть модель в pymc, упрощенная
import pymc as pm
a = pm.Normal('a', 0,5)
b = pm.Normal('b', 0,5)
cnt = 0
@pm.deterministic
def mu(a=a, b=b):
global cnt
cnt += 1
return a + b*x # x and y were loaded from csv
y_hat = pm.Normal('y', mu, 1, observed=True, value=y)
mc = pm.MCMC([a,b,mu,y_hat])
mc.sample(100)
print (cnt)
результат:
240
После запуска модели я ожидаю, что cnt
будет равно 100, но печать дает около 240 (не каждая выборка возвращает одно и то же, но примерно такое число). Я думал, что pymc
, возможно, делал некоторую настройку в первые несколько, но даже при нескольких тысячах итераций cnt
всегда примерно в 2 раза больше, чем итерации mcmc.
- В чем причина этого?
- Могу ли я контролировать это с помощью ручной настройки?