Python PyMC3:对分类变量采样时出现正有限错误

Python PyMC3:对分类变量采样时出现正有限错误,python,theano,pymc,pymc3,Python,Theano,Pymc,Pymc3,我试图用狄里克莱先验对一个简单的分类分布模型进行抽样。这是我的密码: import numpy as np from scipy import optimize from pymc3 import * k = 6 alpha = 0.1 * np.ones(k) with Model() as model: p = Dirichlet('p', a=alpha, shape=k) categ = Categorical('categ', p=p, shape=1)

我试图用狄里克莱先验对一个简单的分类分布模型进行抽样。这是我的密码:

import numpy as np
from scipy import optimize
from pymc3 import *

k = 6
alpha = 0.1 * np.ones(k)

with Model() as model:
    p = Dirichlet('p', a=alpha, shape=k)
    categ = Categorical('categ', p=p, shape=1)

    tr = sample(10000)
我得到了这个错误:

PositiveDefiniteError: Scaling is not positive definite. Simple check failed. Diagonal contains negatives. Check indexes [0 1 2 3 4]

问题是螺母无法正确初始化。一种解决方案是使用另一个采样器,如下所示:

with pm.Model() as model:
    p = pm.Dirichlet('p', a=alpha)
    categ = pm.Categorical('categ', p=p)

    step = pm.Metropolis(vars=p)
    tr = pm.sample(1000, step=step)
在这里,我手动将
p
分配给Metropolis,并让PyMC3将
categ
分配给适当的采样器