diff --git a/docs/source/notebooks/SMC2_gaussians.ipynb b/docs/source/notebooks/SMC2_gaussians.ipynb index bc78eb88ba..0a0fad8f69 100644 --- a/docs/source/notebooks/SMC2_gaussians.ipynb +++ b/docs/source/notebooks/SMC2_gaussians.ipynb @@ -31,7 +31,7 @@ "import shutil\n", "%matplotlib inline\n", "\n", - "test_folder = mkdtemp(prefix='ATMIP_TEST')" + "test_folder = mkdtemp(prefix='SMC_TEST')" ] }, { @@ -110,8 +110,7 @@ " upper=2. * np.ones_like(mu1),\n", " testval=-1. * np.ones_like(mu1),\n", " transform=None)\n", - " like = pm.Deterministic('like', two_gaussians(X))\n", - " llk = pm.Potential('llk', like)" + " llk = pm.Potential('llk', two_gaussians(X))" ] }, { @@ -137,16 +136,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "/Users/fonnescj/Repos/pymc3/pymc3/step_methods/smc.py:138: UserWarning: Warning: SMC is an experimental step method, and not yet recommended for use in PyMC3!\n", - " warnings.warn(EXPERIMENTAL_WARNING)\n" + "/usr/local/lib/python2.7/dist-packages/pymc3-3.1rc3-py2.7.egg/pymc3/step_methods/smc.py:138: UserWarning: Warning: SMC is an experimental step method, and not yet recommended for use in PyMC3!\n" ] } ], "source": [ "with ATMIP_test:\n", " step = smc.SMC(\n", - " n_chains=n_chains, tune_interval=tune_interval,\n", - " likelihood_name=ATMIP_test.deterministics[0].name)" + " n_chains=n_chains, tune_interval=tune_interval)" ] }, { @@ -165,31 +162,17 @@ "name": "stderr", "output_type": "stream", "text": [ - "/Users/fonnescj/Repos/pymc3/pymc3/step_methods/smc.py:485: UserWarning: Warning: SMC is an experimental step method, and not yet recommended for use in PyMC3!\n", - " warnings.warn(EXPERIMENTAL_WARNING)\n" - ] - }, - { - "ename": "TypeError", - "evalue": "unsupported operand type(s) for -: 'str' and 'int'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mhomepath\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtest_folder\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mATMIP_test\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m rm_flag=True)\n\u001b[0m", - "\u001b[0;32m/Users/fonnescj/Repos/pymc3/pymc3/step_methods/smc.py\u001b[0m in \u001b[0;36mATMIP_sample\u001b[0;34m(n_steps, step, start, homepath, chain, stage, n_jobs, tune, progressbar, model, random_seed, rm_flag)\u001b[0m\n\u001b[1;32m 521\u001b[0m \u001b[0mdraws\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 522\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 523\u001b[0;31m \u001b[0mstep\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstage_handler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload_atmip_params\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstage\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 524\u001b[0m \u001b[0mdraws\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstep\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mn_steps\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/fonnescj/Repos/pymc3/pymc3/backends/smc_text.py\u001b[0m in \u001b[0;36mload_atmip_params\u001b[0;34m(self, stage_number, model)\u001b[0m\n\u001b[1;32m 195\u001b[0m \u001b[0mprev\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhighest_sampled_stage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 196\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 197\u001b[0;31m \u001b[0mprev\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstage_number\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 198\u001b[0m \u001b[0mpm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_log\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Loading parameters from completed stage {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprev\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 199\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mTypeError\u001b[0m: unsupported operand type(s) for -: 'str' and 'int'" + "/usr/local/lib/python2.7/dist-packages/pymc3-3.1rc3-py2.7.egg/pymc3/step_methods/smc.py:492: UserWarning: Warning: SMC is an experimental step method, and not yet recommended for use in PyMC3!\n" ] } ], "source": [ - "mtrace = smc.ATMIP_sample(\n", + "mtrace = smc.sample_smc(\n", " n_steps=n_steps,\n", " step=step,\n", " n_jobs=n_jobs,\n", " progressbar=False,\n", - " stage='0',\n", + " stage=0,\n", " homepath=test_folder,\n", " model=ATMIP_test,\n", " rm_flag=True)" @@ -199,7 +182,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Note: Complex models run for a long time and might stop for some reason during the sampling. In order to restart the sampling in the stage when the sampler stopped, set the stage argument to the right stage number (\"`stage='4'`\"). The `rm_flag` determines whether existing results are deleted - there is NO additional warning, so the user should pay attention to that one! " + "Note: Complex models run for a long time and might stop for some reason during the sampling. In order to restart the sampling in the stage when the sampler stopped, set the stage argument to the right stage number(`stage=4`). The `rm_flag` determines whether existing results are deleted - there is NO additional warning, so the user should pay attention to that one! " ] }, { @@ -211,9 +194,22 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "pm.traceplot(mtrace, combined=True);" ] @@ -237,21 +233,21 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 2", "language": "python", - "name": "python3" + "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 3 + "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" + "pygments_lexer": "ipython2", + "version": "2.7.3" } }, "nbformat": 4, diff --git a/pymc3/step_methods/metropolis.py b/pymc3/step_methods/metropolis.py index 7dc0f11f81..0b50282100 100644 --- a/pymc3/step_methods/metropolis.py +++ b/pymc3/step_methods/metropolis.py @@ -50,8 +50,12 @@ def __init__(self, s): self.chol = scipy.linalg.cholesky(s, lower=True) def __call__(self, num_draws=None): - b = np.random.randn(self.n) - return np.dot(self.chol, b) + if num_draws is not None: + b = np.random.randn(self.n, num_draws) + return np.dot(self.chol, b).T + else: + b = np.random.randn(self.n) + return np.dot(self.chol, b) class Metropolis(ArrayStepShared): diff --git a/pymc3/step_methods/smc.py b/pymc3/step_methods/smc.py index ebdb7e733e..09b7dfbac9 100644 --- a/pymc3/step_methods/smc.py +++ b/pymc3/step_methods/smc.py @@ -25,33 +25,15 @@ from ..theanof import inputvars, make_shared_replacements, join_nonshared_inputs import numpy.random as nr +from .metropolis import MultivariateNormalProposal from .arraystep import metrop_select from ..backends import smc_text as atext -__all__ = ['SMC', 'ATMIP_sample'] +__all__ = ['SMC', 'sample_smc'] EXPERIMENTAL_WARNING = "Warning: SMC is an experimental step method, and not yet"\ " recommended for use in PyMC3!" - -class Proposal(object): - """Proposal distributions modified from pymc3 to initially create all the - Proposal steps without repeated execution of the RNG - significant speedup! - - Parameters - ---------- - s : :class:`numpy.ndarray` - """ - def __init__(self, s): - self.s = np.atleast_1d(s) - - -class MultivariateNormalProposal(Proposal): - def __call__(self, num_draws=None): - return np.random.multivariate_normal( - mean=np.zeros(self.s.shape[0]), cov=self.s, size=num_draws) - - proposal_dists = { 'MultivariateNormal': MultivariateNormalProposal, } @@ -147,6 +129,13 @@ def __init__(self, vars=None, out_vars=None, n_chains=100, scaling=1., covarianc vars = inputvars(vars) if out_vars is None: + if not any(likelihood_name == RV.name for RV in model.unobserved_RVs): + with model: + llk = pm.Deterministic(likelihood_name, model.logpt) + else: + raise ValueError( + 'The model likelihood name is already being used by a RV!') + out_vars = model.unobserved_RVs out_varnames = [out_var.name for out_var in out_vars] @@ -419,9 +408,9 @@ def resample(self): return outindx -def ATMIP_sample(n_steps, step=None, start=None, homepath=None, chain=0, stage=0, n_jobs=1, +def sample_smc(n_steps, step=None, start=None, homepath=None, chain=0, stage=0, n_jobs=1, tune=None, progressbar=False, model=None, random_seed=-1, rm_flag=False): - """(C)ATMIP sampling algorithm (Cascading - (C) not always relevant) + """Sequential Monte Carlo sampling Samples the solution space with n_chains of Metropolis chains, where each chain has n_steps iterations. Once finished, the sampled traces are @@ -524,25 +513,8 @@ def ATMIP_sample(n_steps, step=None, start=None, homepath=None, chain=0, stage=0 draws = step.n_steps stage_handler.clean_directory(stage, None, rm_flag) - with model: - chains = stage_handler.recover_existing_results(stage, draws, step, n_jobs) - if chains is not None: - rest = len(chains) % n_jobs - if rest > 0: - pm._log.info('Fixing %i chains ...' % rest) - chains, rest_chains = chains[:-rest], chains[-rest:] - # process traces that are not a multiple of n_jobs - sample_args = { - 'draws': draws, - 'step': step, - 'stage_path': stage_handler.stage_path(stage), - 'progressbar': progressbar, - 'model': model, - 'n_jobs': rest, - 'chains': rest_chains} - _iter_parallel_chains(**sample_args) - pm._log.info('Back to normal!') + chains = stage_handler.recover_existing_results(stage, draws, step, n_jobs) with model: while step.beta < 1: @@ -556,7 +528,7 @@ def ATMIP_sample(n_steps, step=None, start=None, homepath=None, chain=0, stage=0 pm._log.info('Beta: %f Stage: %i' % (step.beta, step.stage)) # Metropolis sampling intermediate stages - chains = stage_handler.clean_directory(stage, chains, rm_flag) + chains = stage_handler.clean_directory(step.stage, chains, rm_flag) sample_args = { 'draws': draws, 'step': step, diff --git a/pymc3/tests/test_smc.py b/pymc3/tests/test_smc.py index 38412acec4..22a0f16a71 100644 --- a/pymc3/tests/test_smc.py +++ b/pymc3/tests/test_smc.py @@ -51,26 +51,25 @@ def two_gaussians(x): upper=2. * np.ones_like(mu1), testval=-1. * np.ones_like(mu1), transform=None) - like = pm.Deterministic('like', two_gaussians(X)) - llk = pm.Potential('like_potential', like) + llk = pm.Potential('muh', two_gaussians(X)) + + self.step = smc.SMC( + n_chains=self.n_chains, + tune_interval=self.tune_interval, + model=self.ATMIP_test) self.muref = mu1 - @pytest.mark.parametrize('n_jobs', [1, 2]) - def test_sample_n_core(self, n_jobs): + @pytest.mark.parametrize(['n_jobs', 'stage'], [[1, 0], [2, 6]]) + def test_sample_n_core(self, n_jobs, stage): def last_sample(x): return x[(self.n_steps - 1)::self.n_steps] - step = smc.SMC( - n_chains=self.n_chains, - tune_interval=self.tune_interval, - model=self.ATMIP_test, - likelihood_name=self.ATMIP_test.deterministics[0].name) - - mtrace = smc.ATMIP_sample( + mtrace = smc.sample_smc( n_steps=self.n_steps, - step=step, + step=self.step, + stage=stage, n_jobs=n_jobs, progressbar=True, homepath=self.test_folder, diff --git a/pymc3/tests/test_step.py b/pymc3/tests/test_step.py index 32ddfa8561..ea8624b4df 100644 --- a/pymc3/tests/test_step.py +++ b/pymc3/tests/test_step.py @@ -5,7 +5,7 @@ from .checks import close_to from .models import simple_categorical, mv_simple, mv_simple_discrete, simple_2model, mv_prior_simple from pymc3.sampling import assign_step_methods, sample -from pymc3.model import Model, Deterministic +from pymc3.model import Model from pymc3.step_methods import (NUTS, BinaryGibbsMetropolis, CategoricalGibbsMetropolis, Metropolis, Slice, CompoundStep, NormalProposal, MultivariateNormalProposal, HamiltonianMC, @@ -163,8 +163,7 @@ def check_trace(self, step_method): with Model(): x = Normal('x', mu=0, sd=1) if step_method.__name__ == 'SMC': - Deterministic('like', - 0.5 * tt.log(2 * np.pi) - 0.5 * x.T.dot(x)) - trace = smc.ATMIP_sample(n_steps=n_steps, step=step_method(random_seed=1), + trace = smc.sample_smc(n_steps=n_steps, step=step_method(random_seed=1), n_jobs=1, progressbar=False, homepath=self.temp_dir) else: