我无法控制pymc3中的链和作业数量

时间:2018-04-12 12:10:49

标签: pymc pymc3

我正在尝试使用pymc3从GMM发行版生成一些示例,这是我的代码:

w = sp.array([.3, .6, 0.1])

w = sp.array([.3, .6, 0.1])

mu = sp.array([-2, 1, 4])

sd = sp.array([1, 0.5, 0.5])

with pm.Model() as model:
    pm.NormalMixture('x', w=w, mu=mu, sd=sd)
    step = pm.Metropolis(tune=False, S=sp.array([1])) 
    trace = pm.sampling.sample(1000, step=step, start={'x':5}, 
    chain=10, cores=1, tune=0)
result = trace['x']

然而,无论我对“链”和“核心”做什么,我都会得到以下结论:

多进程采样(2个作业中的2个链)

大都会:[x]

100%|██████████| 1000/1000 [00:00< 00:00,1407.68it / s]

1 个答案:

答案 0 :(得分:2)

您应该使用chainsnjobs。请注意,将n_chains设置为1000个样本意味着您实际上会从模型中获得n_chains * 1000总抽取量。 njobs参数传递给joblib,它会计算出如何在您的计算机上分发这些链。

cores将从PyMC 3.4开始接受(或者从2018年1月开始接收)。 sample接受关键字参数并默默地对它们做任何事情是一件坏事。这将是项目中有用的贡献或问题。