Skip to content

Instantly share code, notes, and snippets.

@javiercorrea
Created July 25, 2015 03:54
Show Gist options
  • Save javiercorrea/9455389129c24baa9d64 to your computer and use it in GitHub Desktop.
Save javiercorrea/9455389129c24baa9d64 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:db93675d53372ed4f46eb111cb675a9fa3f12743d094c1091a64567878117846"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt \n",
"import pandas as pd \n",
"import numpy as np\n",
"import pymc3\n",
"import theano\n",
"from theano.tensor import eq\n",
"from theano.ifelse import ifelse\n",
"\n",
"theano.config.optimizer = 'None'\n",
"theano.config.exception_verbosity = 'high'\n",
"theano.config.mode = 'DebugMode'"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"num_states = 3 \n",
"num_times = 10\n",
"num_emissions = 2\n",
"example_observation = np.random.randint(0, num_emissions, size = num_times)\n",
"print example_observation"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[1 1 0 1 0 0 1 0 1 1]\n"
]
}
],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"with pymc3.Model() as hmm:\n",
" # Transition \"matrix\"\n",
" a_t = np.ones(num_states)\n",
" T = [pymc3.Dirichlet('T{0}'.format(i), a = a_t, shape = num_states) for i in xrange(num_states)]\n",
" # Emission \"matrix\"\n",
" a_e = np.ones(num_emissions)\n",
" E = [pymc3.Dirichlet('E{0}'.format(i), a = a_e, shape = num_emissions) for i in xrange(num_states)]\n",
" # State models\n",
" p0 = np.ones(num_states) / num_states\n",
" # No shape, so each state is a scalar tensor\n",
" states = [pymc3.Categorical('s0', p = p0)]\n",
" emissions = [pymc3.Categorical('z0',\n",
" p = ifelse(eq(states[0], 0), E[0], ifelse(eq(states[0], 1), E[1], E[2])),\n",
" observed = example_observation[0])]\n",
" for i in xrange(1, num_times):\n",
" states.append(pymc3.Categorical('s{0}'.format(i),\n",
" p = ifelse(eq(states[i-1], 0), T[0], ifelse(eq(states[i-1], 1), T[1], T[2]))))\n",
" emissions.append(pymc3.Categorical('z{0}'.format(i),\n",
" p = ifelse(eq(states[i], 0), E[0], ifelse(eq(states[i], 1), E[1], E[2])),\n",
" observed = example_observation[i]))\n",
" \n",
" #print(hmm.test_point)\n",
" #print(hmm)\n",
" steps = pymc3.Metropolis()\n",
" #steps += [pymc3.ElemwiseCategoricalStep(var = states[i], values = range(num_states)) for i in xrange(num_times)]\n",
" trace = pymc3.sample(1000, steps)\n",
" \n",
" pymc3.traceplot(trace)\n",
" "
],
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "InvalidValueError",
"evalue": "InvalidValueError\n type(variable) = TensorType(float32, scalar)\n variable = TensorConstant{-inf}\n type(value) = <type 'numpy.ndarray'>\n dtype(value) = float32\n shape(value) = ()\n value = -inf\n min(value) = -inf\n max(value) = -inf\n isfinite = False\n client_node = None\n hint = Graph Input 'TensorConstant{-inf}' has invalid value -inf\n specific_hint = none\n context = ...\n TensorConstant{-inf} [@A]\n\n ",
"output_type": "pyerr",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mInvalidValueError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-3-836f5575f638>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0msteps\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpymc3\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mMetropolis\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[0;31m#steps += [pymc3.ElemwiseCategoricalStep(var = states[i], values = range(num_states)) for i in xrange(num_times)]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 26\u001b[0;31m \u001b[0mtrace\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpymc3\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msample\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1000\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msteps\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 27\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[0mpymc3\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtraceplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrace\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/javier/Library/Python/2.7/lib/python/site-packages/pymc3-3.0-py2.7.egg/pymc3/sampling.pyc\u001b[0m in \u001b[0;36msample\u001b[0;34m(draws, step, start, trace, chain, njobs, tune, progressbar, model, random_seed)\u001b[0m\n\u001b[1;32m 86\u001b[0m sample_args = [draws, step, start, trace, chain,\n\u001b[1;32m 87\u001b[0m tune, progressbar, model, random_seed]\n\u001b[0;32m---> 88\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msample_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0msample_args\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 89\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 90\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/javier/Library/Python/2.7/lib/python/site-packages/pymc3-3.0-py2.7.egg/pymc3/sampling.pyc\u001b[0m in \u001b[0;36m_sample\u001b[0;34m(draws, step, start, trace, chain, tune, progressbar, model, random_seed)\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[0mprogress\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mprogress_bar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdraws\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 96\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 97\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstrace\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msampling\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 98\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mprogressbar\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 99\u001b[0m \u001b[0mprogress\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/javier/Library/Python/2.7/lib/python/site-packages/pymc3-3.0-py2.7.egg/pymc3/sampling.pyc\u001b[0m in \u001b[0;36m_iter_sample\u001b[0;34m(draws, step, start, trace, chain, tune, model, random_seed)\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mi\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mtune\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 178\u001b[0m \u001b[0mstep\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstop_tuning\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 179\u001b[0;31m \u001b[0mpoint\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstep\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpoint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 180\u001b[0m \u001b[0mstrace\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecord\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpoint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 181\u001b[0m \u001b[0;32myield\u001b[0m \u001b[0mstrace\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/javier/Library/Python/2.7/lib/python/site-packages/pymc3-3.0-py2.7.egg/pymc3/step_methods/compound.pyc\u001b[0m in \u001b[0;36mstep\u001b[0;34m(self, point)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mstep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpoint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mmethod\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmethods\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 14\u001b[0;31m \u001b[0mpoint\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpoint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 15\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mpoint\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/javier/Library/Python/2.7/lib/python/site-packages/pymc3-3.0-py2.7.egg/pymc3/step_methods/arraystep.pyc\u001b[0m in \u001b[0;36mstep\u001b[0;34m(self, point)\u001b[0m\n\u001b[1;32m 89\u001b[0m \u001b[0mbij\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mDictToArrayBijection\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mordering\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpoint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 90\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 91\u001b[0;31m \u001b[0mapoint\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbij\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpoint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 92\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mbij\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mapoint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 93\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/javier/Library/Python/2.7/lib/python/site-packages/pymc3-3.0-py2.7.egg/pymc3/step_methods/metropolis.pyc\u001b[0m in \u001b[0;36mastep\u001b[0;34m(self, q0)\u001b[0m\n\u001b[1;32m 121\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 122\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 123\u001b[0;31m \u001b[0mq_new\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmetrop_select\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdelta_logp\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mq\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mq0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mq0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 124\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 125\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mq_new\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mq\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/javier/Library/Python/2.7/lib/python/site-packages/theano/compile/function_module.pyc\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 593\u001b[0m \u001b[0mt0_fn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 594\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 595\u001b[0;31m \u001b[0moutputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 596\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 597\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'position_of_error'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/javier/Library/Python/2.7/lib/python/site-packages/theano/compile/debugmode.pyc\u001b[0m in \u001b[0;36mdeco\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2149\u001b[0m \u001b[0mTensorType\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfilter_checks_isfinite\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmaker\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmode\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcheck_isfinite\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2150\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2151\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2152\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2153\u001b[0m \u001b[0;31m# put back the filter_checks_isfinite\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/javier/Library/Python/2.7/lib/python/site-packages/theano/compile/debugmode.pyc\u001b[0m in \u001b[0;36mf\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1821\u001b[0m raise InvalidValueError(r, storage_map[r][0],\n\u001b[1;32m 1822\u001b[0m hint=(\"Graph Input '%s' has invalid value \"\n\u001b[0;32m-> 1823\u001b[0;31m \"%s\" % (r, storage_map[r][0])))\n\u001b[0m\u001b[1;32m 1824\u001b[0m \u001b[0mr_vals\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mr\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstorage_map\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mr\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1825\u001b[0m \u001b[0mstorage_map\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mr\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mInvalidValueError\u001b[0m: InvalidValueError\n type(variable) = TensorType(float32, scalar)\n variable = TensorConstant{-inf}\n type(value) = <type 'numpy.ndarray'>\n dtype(value) = float32\n shape(value) = ()\n value = -inf\n min(value) = -inf\n max(value) = -inf\n isfinite = False\n client_node = None\n hint = Graph Input 'TensorConstant{-inf}' has invalid value -inf\n specific_hint = none\n context = ...\n TensorConstant{-inf} [@A]\n\n "
]
}
],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
@aflaxman
Copy link

For me this produces a error earlier:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-9-560824d838b4> in <module>()
      9     p0 = np.ones(num_states, dtype=float) / num_states
     10     # No shape, so each state is a scalar tensor
---> 11     states = [pymc3.Categorical('s0', p = p0)]
     12     emissions = [pymc3.Categorical('z0',
     13                                    p = ifelse(eq(states[0], 0), E[0], ifelse(eq(states[0], 1), E[1], E[2])),

/homes/abie/anaconda/envs/testenv/lib/python2.7/site-packages/pymc3-3.0-py2.7.egg/pymc3/distributions/distribution.pyc in __new__(cls, name, *args, **kwargs)
     17             data = kwargs.pop('observed', None)
     18             dist = cls.dist(*args, **kwargs)
---> 19             return model.Var(name, dist, data)
     20         elif name is None:
     21             return object.__new__(cls) #for pickle

/homes/abie/anaconda/envs/testenv/lib/python2.7/site-packages/pymc3-3.0-py2.7.egg/pymc3/model.pyc in Var(self, name, dist, data)
    141         """
    142         if data is None:
--> 143             var = FreeRV(name=name, distribution=dist, model=self)
    144             self.free_RVs.append(var)
    145         else:

/homes/abie/anaconda/envs/testenv/lib/python2.7/site-packages/pymc3-3.0-py2.7.egg/pymc3/model.pyc in __init__(self, type, owner, index, name, distribution, model)
    351             self.tag.test_value = np.ones(
    352                 distribution.shape, distribution.dtype) * distribution.default()
--> 353             self.logp_elemwiset = distribution.logp(self)
    354             self.model = model
    355 

/homes/abie/anaconda/envs/testenv/lib/python2.7/site-packages/pymc3-3.0-py2.7.egg/pymc3/distributions/discrete.pyc in logp(self, value)
    287         k = self.k
    288 
--> 289         return bound(log(p[value]),
    290             value >= 0,
    291             value <= (k - 1),

IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

@twiecki
Copy link

twiecki commented Jul 26, 2015

I would turn your variables into one vector rather than create the lists. Unfortunately, I hit this issue when I did that here: pymc-devs/pymc#792

@sshegheva
Copy link

I have a very similar model (actually the exact topology which made this example extremely helpful). I am having the same issue as outlined above, but I am not following the suggestion of @twiecki for creating a vector instead of the list.

I changed the lists to np.array everywhere where it is possible and it is not making any difference. Any other suggestions?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment