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

I cannot control the number of chains and jobs in 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']

但是,无论我用 "chain" 和 "cores" 做什么,我都会得到以下结果:

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

大都市:[x]

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

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

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