{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# How to debug a model\n", "\n", "There are various levels on which to debug a model. One of the simplest is to just print out the values that different variables are taking on.\n", "\n", "Because `PyMC3` uses `Theano` expressions to build the model, and not functions, there is no way to place a `print` statement into a likelihood function. Instead, you can use the `Theano` `Print` operatator. For more information, see: theano Print operator for this before: http://deeplearning.net/software/theano/tutorial/debug_faq.html#how-do-i-print-an-intermediate-value-in-a-function.\n", "\n", "Let's build a simple model with just two parameters:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " [-----------------100%-----------------] 5000 of 5000 complete in 0.8 sec" ] }, { "data": { "image/png": "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\nlB/nlCPHlB/nWnSkasCAASet/gfYnzP0+eef/+pxjp5af1x6ejrfffedrkiKiMiveu2110hPT2fg\nwIHU1tb6w4MyAAAgAElEQVQyYcIE7r77bhISEtwdmoiICNDEourmm2/Gy8uLESNGYDab+eCDD9i8\neTMPPvigw+OcPYH+22+/ZfPmzSQnJ7N79+7T/AgiInIuW7hwIUuWLMF6bIn+e+65h5EjR6qoEhGR\nVsPxkwuP+fLLL7n33nsJCwujffv2/PnPf2b37t107NiRjh07nvK4Uz21HuDw4cPMmzePadOm4cIZ\niCIicpZr164d5garefr5+eGvBzaLiEgr0uQl1b/++muuuab+2UOrVq1qUofm6An0K1as4OjRo9x1\n110cPnyYqqoqunXrxi233PJbP4OIiJzDwsPDue2227jpppswm8189tlnWK1W5s2bB8C9997r5ghF\nRKSta1JR9Y9//IMpU6Zw5MgRALp168acOXOcHufoqfWjR49m9OjRACxdupQ9e/aooBIRkZN07dqV\nrl27YrPZsNls9O3b190hiYiINNKkoqpHjx58+OGHFBQU4O3t3eRpF86eWi8iIuLMmRyJqqqq4qGH\nHiI/Px+r1crs2bMJDg5utM+iRYtYuHAhXl5ejB8/nvj4eEpLS5k8eTJlZWVUV1fzyCOPcNlll52x\nuERE5OzWpKLq4MGDPPbYYxw8eJC3336bCRMm8M9//pNOnTo5PM7ZU+uP++Mf//gbQhYRkbbkjTfe\n4Pnnn6ekpH5Z4OMrz27btu03n2vBggVER0dz77338tFHH5Gamsr//u//2tuPHDlCWloaS5cupbKy\nkpEjR9K3b19ef/11rrnmGsaMGcOePXuYNGkSS5YsOWOfUUREzm5NKqqmTZvGuHHjePrpp+nQoQPD\nhg1jypQpvP32266OT1rQ0cpKd4cg0modrazE291BtFFvvPEG7733HhdccEGzz5WVlcVdd90FQL9+\n/U56zMemTZuIjY3FbDZjtVrp0qULO3bs4M4778RisQBQU1ODt7e+DSIi8osmFVWFhYVce+21PP30\n05hMJkaMGKGC6hwTFBTM0YceocLdgYi0Ut7U/38iLS8yMpIOHTr85uMWL17MG2+80Whbhw4d7Euz\n+/v7U1pa2qj9xFVr/fz8KCkpsR9z+PBhHn744UajWyIiIk0qqnx8fPjxxx/tDwDeuHGj/YqdnBs8\nPDxo3z7E3WGIiJxk9OjR3HzzzfTq1QtPT0/79pSUFIfHJSYmkpiY2GjbfffdZ1+VtqysrFEBBfWr\n1jYstMrKyggMDARgx44dTJ48mSlTptCnT58mxR4aGuB8pzZOOXJM+XFOOXJM+WkZTSqqpk6dyt13\n382+ffsYPnw4RUVF/N///Z+rYxMREWHWrFncfPPNDp+L2FS9e/dmzZo1XHrppaxZs+ak4qhnz548\n++yz2Gw2qqqq2L17N1FRUezatYu//e1vPPvss1x44YVNfr/Dh0uaHfO5LDQ0QDlyQPlxTjlyTPlx\n7kwVnU0qqvLz81m8eDHff/89tbW1dOvWTSNVIiLSIiwWyxlbAXDkyJFMmTKFUaNGYbFYmDt3LgDz\n588nIiKC/v37M3r0aEaNGoVhGEycOBGLxcK//vUvbDYbs2bNwjAMAgMDef75589ITCIicvYzGYZh\nONvppptu4sMPP2yJeBxSpS0i0vqd6akmKSkpmEwm+vXrh5eXl337FVdccUbfxxXUbzmmq+iOKT/O\nKUeOKT/OtehIVXh4OFOnTqVXr174+PjYt+thvSIi4mpbt24FYMuWLfZtJpOJN998010hiYiINOKw\nqPrpp58477zz7A9GzMnJadSuokpERFwtLS3N3SGIiIg45LCoGj9+PEuXLiUlJYXXXnuNsWPHtlRc\nIiIiQP2Ks6+++irl5eUYhkFdXR2HDh0iIyPD3aGJiIgA4OGoseHtVh988IHLgxERETnRY489xqBB\ng6itreVPf/oTERERDBo0yN1hiYiI2Dksqo4/lwoaF1giIiItxcfHh4SEBK688koCAwN54oknyMzM\ndHdYIiIidg6LqoYaFlhNZRgG06dPJzk5mTFjxrB///5G7cuXL2fEiBGMGjWKGTNm/Obzi4jIuc/b\n25ujR4/StWtXcnJyMJlMlJeXuzssERERO4f3VO3cuZOBAwcC9YtWHP/ZMAxMJhOff/65w5OvXLkS\nm81Geno6OTk5pKSkkJqaCkBVVRX//ve/Wb58ORaLhUmTJrFq1Sr69+9/Jj6XiIicI+644w4efPBB\nnnvuORITE/nggw/o0aOHu8MSERGxc1hUffLJJ806eVZWFnFxcQD06tWL3Nxce5vFYiE9Pd3+EOGa\nmhq8vb2b9X4iInLuGTp0KEOGDMFkMrFkyRK+//57YmJi3B2WiIiIncOiqmPHjs06eWlpKQEBvzxQ\ny2w2U1dXh4eHByaTifbt2wP1y+VWVFRwzTXXNOv9RETk3LJq1Sq6d+9OeHg4K1euZPHixVx00UVE\nR0fj4dHkGex2VVVVPPTQQ+Tn52O1Wpk9e7b9sSHHLVq0iIULF+Ll5cX48eOJj4+3t+Xl5XHbbbfx\n9ddf2y8KioiI/PYe6TewWq2UlZXZXx8vqI4zDIM5c+awbt065s2b58pQRETkLPPqq68yb948qqqq\n2L59O5MnT2bgwIGUl5czZ86c0zrnggULiI6O5u2332b48OH2KenHHTlyhLS0NBYuXMgrr7zC3Llz\nqa6uBuovFD755JOaVSEiIidxaVHVu3dv1qxZA0B2djbR0dGN2v/+979TXV1NamqqrviJiEgjy5Yt\n46233qJ79+4sX76cAQMGkJSUxCOPPMJXX311WufMysqiX79+APTr149169Y1at+0aROxsbGYzWas\nVitdunRhx44dAEybNo2JEyfi4+PTvA8mIiLnHIfT/5pr8ODBrF27luTkZABSUlJYvnw5FRUVXHLJ\nJSxZsoTY2FhGjx6NyWRizJgxevaIiIgA9avO+vr6ArB+/XpGjRpl394Uixcv5o033mi0rUOHDlit\nVgD8/f0pLS1t1H7itHU/Pz9KSkqYN28e8fHxXHjhhXrEiIiInMSlRZXJZGLmzJmNtnXt2tX+89at\nW1359iIichbz9PSkuLiY8vJytm3bRt++fQE4ePAgZrPz7isxMZHExMRG2+677z77tPSysrJGBRTU\nT1tvWGiVlZURGBjI+++/z/nnn88777zDkSNHGDduHGlpaU5jCA0NcLpPW6ccOab8OKccOab8tAyX\nFlUiIiKn6y9/+Qu33HILNTU1JCYmEhYWxkcffcQzzzzDPffcc1rnPD4t/dJLL2XNmjX06dOnUXvP\nnj159tlnsdlsVFVVsXv3bqKiovj000/t+wwYMIDXXnutSe93+HDJacXZVoSGBihHDig/zilHjik/\nzp2polNFlYiItEpDhgzh8ssvp7Cw0L6Eur+/P0888QRXXXXVaZ1z5MiRTJkyhVGjRmGxWJg7dy4A\n8+fPJyIigv79+zN69GhGjRqFYRhMnDjxpHt+TSaTpgCKiEgjJuMs6hlUaYuItH6aavIL9VuO6Sq6\nY8qPc8qRY8qPc2eqz3Lp6n8iIiIiIiLnOhVVIiIiIiIizaCiSkREREREpBlUVImIiIiIiDSDiioR\n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\nhBBCiKvw/wETJSCyA1/wUAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "\n", "import pymc3 as pm\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import pandas as pd\n", "import theano.tensor as T\n", "\n", "x = np.random.randn(100)\n", "\n", "with pm.Model() as model:\n", " mu = pm.Normal('mu', mu=0, sd=1)\n", " sd = pm.Normal('sd', mu=0, sd=1)\n", "\n", " obs = pm.Normal('obs', mu=mu, sd=sd, observed=x)\n", " step = pm.Metropolis()\n", " trace = pm.sample(5000, step)\n", "pm.traceplot(trace);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hm, looks like something has gone wrong, but what? Let's look at the values getting proposed using the `Print` operator:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mu __str__ = 0.0\n", "sd __str__ = 0.0\n", "sd __str__ = -1.4315792219864252\n", "mu __str__ = 0.0\n", "sd __str__ = 0.0\n", "sd __str__ = 0.0\n", "mu __str__ = 1.3615472322158946\n", "mu __str__ = 0.0\n", "sd __str__ = 0.5322478998286673\n", "mu __str__ = 0.0\n", "sd __str__ = 0.0\n", "sd __str__ = 0.0\n", "mu __str__ = -1.2753319093167306\n", "mu __str__ = 0.0\n", "sd __str__ = -0.4843153880482674\n", "mu __str__ = 0.0\n", "sd __str__ = 0.0\n", "sd __str__ = 0.0\n", "mu __str__ = -0.4478412022208693\n", "mu __str__ = 0.0\n", " [-----------------100%-----------------] 3 of 3 complete in 0.0 sec" ] } ], "source": [ "with pm.Model() as model:\n", " mu = pm.Normal('mu', mu=0, sd=1)\n", " sd = pm.Normal('sd', mu=0, sd=1)\n", " \n", " mu_print = T.printing.Print('mu')(mu)\n", " sd_print = T.printing.Print('sd')(sd)\n", " \n", " obs = pm.Normal('obs', mu=mu_print, sd=sd_print, observed=x)\n", " step = pm.Metropolis()\n", " trace = pm.sample(3, step) # Make sure not to draw too many samples" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looks like `sd` is always `0` which will cause the logp to go to `-inf`. Of course, we should not have used a prior that has negative mass for `sd` but instead something like a `HalfNormal`.\n", "\n", "We can also redirect the output to a string buffer and access the proposed values later on (thanks to [Lindley Lentati](https://github.com/LindleyLentati) for providing this example):" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nVatWYeHChdBoNPjTn/6kuA9ct956K7KyspCeng5RFLF69WrF/k6KiooUO3oJAH72s5/ht7/9LRYt\nWgSr1Yonn3xSkTemRkdHY8OGDfj73/8OX19frF279nufz7nriYiIVEpZH4uJiIio1xjyREREKsWQ\nJyIiUimGPBERkUox5ImIiFSKIU9ERKRSDHki6rOXX34ZL7/88jWPd02ElJeXh7/85S9OOVZpaSme\nfvppAMDx48fx+9//3in7JRoMFD0ZDhG5l48++ggAUFBQ4LSpdMvKylBSUgIAGD9+PMaPH++U/RIN\nBgx5Ijd0+PBhvPTSS9DpdKioqEBiYiL+53/+B1VVVXj44YcREBAADw8PvPHGG1i7di0OHToEQRBw\n11134ZFHHrnh6/V6Pf75z39i06ZNEAQB48aNwx/+8Afo9Xr89re/RX5+PgBgwYIFmDdvHs6dO4dn\nn30WbW1tqK2txUMPPYQHHnjghnWPHj0aWVlZePHFF9Ha2opXX30VjzzyCJ5//nkcPnwYdrsd99xz\nD372s5/h8OHD+POf/wy73Y74+Hj813/9F55++mmYzWZUVVXhxz/+MX7zm99g7dq1KC0txbPPPovb\nb78dL730EjZv3oyioiL84Q9/QGNjI7y8vPC73/0O48ePx6pVq2AymXDixAlUVlbi17/+NX76059K\n9asjci8iEbmdb775RkxMTBSLi4tFURTFxx9/XHzrrbfE0tJScfTo0WJ5ebkoiqK4ZcsWcdmyZaIo\nimJbW5uYnp4u7t2794avP3PmjJiWliY2NjaKoiiKa9asEZ977jnx8OHD4i9+8QtRFEWxvr5efOqp\np0RRFMW1a9eKBw8eFEVRFC9cuCBOmjRJFEVRfOmll8SXXnrpmrpHjx4tiqIofvjhh459bN26VVy/\nfr0oiqJosVjEBx54QMzKyhK/+eYbccqUKaLZbBZFURTfeOMN8aOPPhJFURSbm5vFpKQksb6+Xvzm\nm2/ExYsXO34uXV+np6eLO3fuFEVRFHNycsRZs2aJHR0d4lNPPSUuX75cFEVRPHPmjDh16tQB/S6I\nlIzX5IncVHJyMqKjowEAc+fOxaFDhwAAQUFBCA8PBwAcOnTIcR3cw8MDP/nJTxzPu97rjxw5gtmz\nZ8PX1xcAcN999+HQoUOIj49HcXExli5dik8//RQrVqwAADz11FOwWCx47bXX8Le//Q1tbW19bseB\nAwewe/du3H333bjvvvtQVVWFs2fPAri0Hra3tzcA4KGHHkJ4eDjefPNNrF27Flar9YbHa21txYUL\nF1CPWcUAAAKxSURBVJCamgoASExMhL+/P4qKigAAN998MwAgPj4eTU1Nfa6ZSC14up7ITel0V/57\n2u12x/dGo9HxuHjV0hOiKMJqtQIAtFrtNa8XRfGa19hsNvj5+eGzzz7DwYMHsXfvXtx999344osv\nsGrVKvj7+2PWrFm488478cUXX/S5HXa7HStWrHAEcn19Pby9vZGTk9OtLevXr0dZWRl+8pOfIDU1\nFQcOHLjhyox2u/2abXa7HTabDUD3nxHRYMaePJGbys7ORlVVFex2Oz755BPccsstALoH+7Rp0/Dx\nxx/Dbrejra0Nn332GX7wgx9c9/UpKSmYMmUK9uzZ4+jdvv/++/jBD36A3bt3Y8WKFbjlllvw9NNP\nw9vbG+Xl5Th48CAef/xxzJ49G4cPH77m+Ffr2qbVah2BO23aNLz33nuwWq1oaWnBwoULkZube81r\nDxw4gKVLl2LOnDkoLy9HVVUVbDZbt311MZlMGDZsGDIyMgBcWmq6pqYGI0eOvGFNRIMRe/JEbiok\nJAQrV65EZWUlbr75ZqSnp6O8vLzbUqX3338/ioqKMHfuXFitVsydOxepqak4fPgwQkNDu71+3rx5\nEAQBv/jFL7Bo0SLYbDaMGzcOa9asgcFgwFdffYUf/ehHMBqNmDNnDuLj47Fs2TIsWLAAvr6+iImJ\nQWRkJEpLS29Yc1dtCQkJeOWVV/DCCy/giSeeQHFxMe655x7YbDakp6djypQpjg8NXR599FGsWLEC\nvr6+CA4Oxvjx41FaWooxY8agqakJK1euxL333ut4/vPPP4/Vq1djw4YNMBqNeOWVV7qd/bi6JqLB\niEvNErmhw4cP4+WXX8Y777wjy+uJSB14up6IiEil2JMnIiJSKfbkiYiIVIohT0REpFIMeSIiIpVi\nyBMREakUQ56IiEil/h91UI9Ri7rEBQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from io import StringIO\n", "import sys\n", "\n", "\n", "x = np.random.randn(100)\n", "\n", "\n", "old_stdout = sys.stdout\n", "sys.stdout = mystdout = StringIO()\n", "\n", "with pm.Model() as model:\n", " mu = pm.Normal('mu', mu=0, sd=1)\n", " sd = pm.Normal('sd', mu=0, sd=1)\n", "\n", " mu_print = T.printing.Print('mu')(mu)\n", " sd_print = T.printing.Print('sd')(sd)\n", "\n", " obs = pm.Normal('obs', mu=mu_print, sd=sd_print, observed=x)\n", " step = pm.Metropolis()\n", " trace = pm.sample(3, step) # Make sure not to draw too many samples\n", "\n", "\n", "sys.stdout = old_stdout\n", "\n", "output = mystdout.getvalue().split('\\n')\n", "mulines = [s for s in output if 'mu' in s]\n", "\n", "muvals = [line.split()[-1] for line in mulines]\n", "plt.plot(np.arange(0,len(muvals)), muvals);\n", "plt.xlabel('proposal iteration')\n", "plt.ylabel('mu value')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 0 }