Я пытаюсь использовать писать свои собственные stochastic
и deterministic
переменные с pymc3, но старый опубликовал рецепт pymc2.3 объяснил, как мы можем параметризуем наши переменные больше не работает. Например, я пытался использовать этот direct
подход и не удалось:Определение стохастические и детерминированные переменные с pymc3
def x_logp(value, x_l, x_h):
if ((value>x_h) or (value<x_l)):
return -np.inf
else:
return -np.log(x_h-x_l+1)
def x_rand(x_l,x_h):
return np.round((x_h-x_l)*np.random.random_sample())+x_l
Xpos=pm.stochastic(logp=x_logp,
doc="X position of halo center ",
observed=False,
trace=True,
name='Xpos',
random=x_rand,
value=25.32,
parents={'x_l':0,'x_h'=500},
dtype=float64,
plot=True,
verbose=0)
Я получил следующее сообщение об ошибке:
ERROR: AttributeError: 'module' object has no attribute 'Stochastic' [unknown]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'Stochastic'
Мне интересно, как я мог определить свои собственные априорные или вероятность в pymc3
без для например, используя декораторы и доступные дистрибутивы pymc
?
Hi Thomas, я намерен использовать подход декоратора Theano (см. Также https://github.com/pymc-devs/pymc/issues/507), чтобы позволить мне использовать emcee sampler, интегрированный с PyMC3. У меня пока нет конкретных вопросов, но можете ли вы намекнуть, что это правильный путь? Cheers, Jon – jonsedar
Да, emcee не требует градиента, поэтому декоратор-украшатель может быть наименьшим сопротивлением. Если вы получаете emcee для работы с pymc3, определенно сообщите нам, так как было бы неплохо совместить эти два. – twiecki
Ну, у меня есть какой-то успех - просто следуйте шаблону дизайна в [вашем блоге] (http://nbviewer.ipython.org/github/twiecki/WhileMyMCMCGentlySamples/blob/master/content/downloads/notebooks/emcee.ipynb) и создал пользовательскую функцию lnprob для обновления модели PyMC3 и вывода logp обратно в пробоотборник emcee. Протестированы близкие результаты к PyMC3 и OLS и ~ 100 раз быстрее, чем NUTS на моем наборе данных 6500 x 11! Я подозреваю, что идем наоборот, и использовать emcee sampler из вызова PyMC3 будет еще быстрее, но я вникнул в код Theano, PyMC3 и emcee, и это довольно тяжело. – jonsedar