1

pymc3 で単純なモデルを試していますが、find_MAPメソッドを使用しようとすると次のエラーがスローされます。

ValueError: Optimization error: max, logp or dlogp at max have non-finite values. Some values may be outside of distribution support. max: {'theta_stickbreaking': array([  1.90465421e-09,   0.00000000e+00])} logp: array(-inf) dlogp: array([ -1.14279242e-09,   0.00000000e+00])Check that 1) you don't have hierarchical parameters, these will lead to points with infinite density. 2) your distribution logp's are properly specified. Specific issues:

非常によく似たコードは、ディリクレ分布と多項分布の代わりにベータ分布と二項分布を使用して機能しますが、次のコードは失敗します。

from pymc3 import Model
from pymc3 import Metropolis 
from pymc3 import Multinomial, Dirichlet
from pymc3 import sample, find_MAP
from pymc3 import traceplot
from scipy import optimize
import numpy as np

y_obs = [200, 400, 500]
k = 3
a= np.array([1, 1, 1])

with Model() as multinomial_inference:
    n = 1000
    theta = Dirichlet('theta', a, shape=k)
    y = Multinomial('y', n, theta, observed=y_obs)

with multinomial_inference:
    start = find_MAP()
    step = Metropolis([theta])
    trace = sample(10000, step, start)

爆破しないようにモデルの推論設定を調整するにはどうすればよいですか?

4

1 に答える 1

2

y_obs問題は、選択した と の値にあると思いますn。の観測値のy合計は になりnます。

于 2015-07-30T21:03:42.993 に答える