10

誰かがPyMC MCMCコードを並列化する方法について一般的な指示を与えることができますか? hereLASSOの例に従って回帰を実行しようとしています。並列サンプリングがデフォルトで行われることをどこかで読みましたが、それを機能させるためにまだ何かを使用する必要がありますか?Parallel Python

これは、私のマシンで並列化できるようにしたい参照コードです。

x1 = norm.rvs(0, 1, size=n)
x2 = -x1 + norm.rvs(0, 10**-3, size=n)
x3 = norm.rvs(0, 1, size=n)

X = np.column_stack([x1, x2, x3])
y = 10 * x1 + 10 * x2 + 0.1 * x3

beta1_lasso = pymc.Laplace('beta1', mu=0, tau=1.0 / b)
beta2_lasso = pymc.Laplace('beta2', mu=0, tau=1.0 / b)
beta3_lasso = pymc.Laplace('beta3', mu=0, tau=1.0 / b)

@pymc.deterministic
def y_hat_lasso(beta1=beta1_lasso, beta2=beta2_lasso, beta3=beta3_lasso, x1=x1, x2=x2, x3=x3):
    return beta1 * x1 + beta2 * x2 + beta3 * x3

Y_lasso = pymc.Normal('Y', mu=y_hat_lasso, tau=1.0, value=y, observed=True)

lasso_model = pymc.Model([Y_lasso, beta1_lasso, beta2_lasso, beta3_lasso])
lasso_MCMC = pymc.MCMC(lasso_model)
lasso_MCMC.sample(20000,5000,2)
4

2 に答える 2

10

PYMC3 はpsamplesampleにマージしました。

並行して実行するには、パラメーターを設定しますnjobs > 1

pymc.sample 関数の使用法は次のとおりです。

sample(draws, step, start=None, trace=None, chain=0, njobs=1, tune=None, progressbar=True, model=None, random_seed=None) njobs=Noneを設定すると、デフォルトで Number of CPUs - 2 になることに 注意してください。

これが役立つことを願っています。

于 2014-10-16T17:28:19.900 に答える