我正在尝试使用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]
答案 0 :(得分:2)
您应该使用chains
和njobs
。请注意,将n_chains
设置为1000个样本意味着您实际上会从模型中获得n_chains * 1000
总抽取量。 njobs
参数传递给joblib
,它会计算出如何在您的计算机上分发这些链。
cores
将从PyMC 3.4开始接受(或者从2018年1月开始接收)。 sample
接受关键字参数并默默地对它们做任何事情是一件坏事。这将是项目中有用的贡献或问题。