Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PyMC3 & Theano - Theano code that works stop working after pymc3 import

Some simple theano code that works perfectly, stop working when I import pymc3

Here some snipets in order to reproduce the error:

#Initial Theano Code (this works)    
import theano.tensor as tsr

x = tsr.dscalar('x')
y = tsr.dscalar('y')
z = x + y

#Snippet 1
import pymc3 as pm
import theano.tensor as tsr

x = tsr.dscalar('x')
y = tsr.dscalar('y')
z = x + y

#Snippet 2
import theano.tensor as tsr
import pymc3 as pm

x = tsr.dscalar('x')
y = tsr.dscalar('y')
z = x + y

#Snippet 3
import pymc3 as pm

x = pm.theano.tensor.dscalar('x')
y = pm.theano.tensor.dscalar('y')
z = x + y

And I get the following error for each of the previous snippets:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/Users/tom/anaconda/lib/python3.4/site-packages/theano/gof/op.py in __call__(self, *inputs, **kwargs)
    516                 try:
--> 517                     storage_map[ins] = [self._get_test_value(ins)]
    518                     compute_map[ins] = [True]

/Users/tom/anaconda/lib/python3.4/site-packages/theano/gof/op.py in _get_test_value(cls, v)
    478 
--> 479         raise AttributeError('%s has no test value' % v)
    480 

AttributeError: x has no test value

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
<ipython-input-2-ef8582b040f8> in <module>()
      3 x = pm.theano.tensor.dscalar('x')
      4 y = pm.theano.tensor.dscalar('y')
----> 5 z = x + y

/Users/tom/anaconda/lib/python3.4/site-packages/theano/tensor/var.py in __add__(self, other)
    126     def __add__(self, other):
    127         try:
--> 128             return theano.tensor.basic.add(self, other)
    129         # We should catch the minimum number of exception here.
    130         # Otherwise this will convert error when Theano flags

/Users/tom/anaconda/lib/python3.4/site-packages/theano/gof/op.py in __call__(self, *inputs, **kwargs)
    523                         run_perform = False
    524                     elif config.compute_test_value == 'raise':
--> 525                         raise ValueError('Cannot compute test value: input %i (%s) of Op %s missing default value' % (i, ins, node))
    526                     elif config.compute_test_value == 'ignore':
    527                         # silently skip test

ValueError: Cannot compute test value: input 0 (x) of Op Elemwise{add,no_inplace}(x, y) missing default value

Any Ideas ? Thanks in advance

like image 890
Samoht-Sann Avatar asked May 14 '15 11:05

Samoht-Sann


People also ask

What is PyMC3 used for?

PyMC3 is a probabilistic programming package for Python that allows users to fit Bayesian models using a variety of numerical methods, most notably Markov chain Monte Carlo (MCMC) and variational inference (VI). Its flexibility and extensibility make it applicable to a large suite of problems.

Is PyMC3 open source?

PyMC3 is the current version of the PyMC open source probabilistic programming framework for Python, having been forked over 1,300 times and starred over 5,400 times on GitHub.


2 Answers

I think this is related to pymc3 setting theano.config.compute_test_value = 'raise': https://github.com/pymc-devs/pymc3/blob/master/pymc3/model.py#L395

You can explicitly set theano.config.compute_test_value back to 'ignore' to get rid of the error.

like image 124
twiecki Avatar answered Oct 05 '22 18:10

twiecki


Solution proposed here lasts a bit longer than setting the flag. In your shell type:

theano-cache purge
like image 29
Dima Lituiev Avatar answered Oct 05 '22 19:10

Dima Lituiev