2017-01-18 68 views
0

如果我有一個如下所示的模型,我如何訪問theano函數以獲取適合我的模型的值(s)?有沒有辦法從pymc3生成變量?

這是一個相當基本的模型,所以我可以用原始function來計算我的變量。不過,我打算動態生成pymc3模型,其中一些變量被重用/固定/界等

我知道我可以從model.makefn([expected])訪問theano功能,但這將依賴於轉換參數,像sigma_log_而不是sigma

理想情況下,我正在尋找類似model.evalute([expected], alpha=1, beta=2)

有沒有這樣的方法?

感謝

def function(a, b): 
    # do something 

basic_model = Model() 

with basic_model: 

    # Priors for unknown model parameters 
    alpha = Normal('alpha', mu=0, sd=10) 
    beta = Normal('beta', mu=0, sd=10, shape=2) 
    sigma = HalfNormal('sigma', sd=1) 

    # Expected value of outcome 
    expected = Deterministic('expected', function(alpha,beta)) 
    # Likelihood (sampling distribution) of observations 
    Y_obs = Normal('Y_obs', mu=function, sd=sigma, observed=Y) 

回答

2

這裏典型的做法是從模型的東西后驗分佈第一個樣品一樣

with model: 
    trace = pm.sample(N_SAMPLES) 

然後使用樣本逼近你的函數的後預期值。

相關問題