2014-09-05 4 views
2

나는 Implementing Dirichlet processes for Bayesian semi-parametric models (here 소스)에서 참조 디리클레 프로세스 예를 구현하기 위해 구현하고 싶습니다 3 데코레이터 :디리클레 과정은

그래디언트 계산을 위해 Theano를 사용하는 PyMC 3에서 어떻게 구현합니까?

편집

: 슬프게도 정말 느리고 합성 데이터의 원래 매개 변수를 얻을하지 않습니다

with pm.Model() as mod: 
    conc = Uniform('concentration', lower=0.5, upper=10) 
    v = Beta('v', alpha=1, beta=conc, shape=n_dp) 
    p, updates = theano.scan(fn=lambda stick, idx: stick * t.prod(1 - v[:idx]), 
          outputs_info=None, 
          sequences=[v, t.arange(n_dp)]) 
    t.set_subtensor(p[-1], 1 - t.sum(p[:-1])) 
    category = Categorical('category', p, shape=n_algs) 
    sd = Uniform('precs', lower=0, upper=20, shape=n_dp) 
    means = Normal('means', mu=0, sd=100, shape=n_dp) 
    points = Normal('obs', 
        means[category], 
        sd=sd[category], 
        observed=data) 

    step1 = pm.Slice([conc, v, sd, means]) 
    step3 = pm.ElemwiseCategoricalStep(var=category, values=range(n_dp)) 
    trace = pm.sample(2000, step=[step1, step3], progressbar=True) 

: 은 내가 theano.scan 방법을 사용하여 다음과 같은 솔루션을 시도했다.

더 좋은 해결책이 있습니까? 그렇습니다.

답변

관련 문제