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