Potentially related to #1876, A model I’m running (use to work before i updated pymc to latest) now has issues with computing test value. I want to override pymc’s flag using the Model parameter. For example:
with pm.Model(theano_config={'compute_test_value': 'off'}):
eta = pm.Exponential('eta', lam=0.5)
It throws a AttributeError: 'scratchpad' object has no attribute 'test_value'
.
Full traceback below:
AttributeError Traceback (most recent call last)
<ipython-input-9-fb56197b841d> in <module>()
1 with pm.Model(theano_config={'compute_test_value': 'off'}):
----> 2 eta = pm.Exponential('eta', lam=0.5)
C:\Anaconda2\lib\site-packages\pymc3\distributions\distribution.pyc in __new__(cls, name, *args, **kwargs)
37 total_size = kwargs.pop('total_size', None)
38 dist = cls.dist(*args, **kwargs)
---> 39 return model.Var(name, dist, data, total_size)
40 else:
41 raise TypeError("Name needs to be a string but got: {}".format(name))
C:\Anaconda2\lib\site-packages\pymc3\model.pyc in Var(self, name, dist, data, total_size)
520 transform=dist.transform,
521 total_size=total_size,
--> 522 model=self)
523 pm._log.debug('Applied {transform}-transform to {name}'
524 ' and added transformed {orig_name} to model.'.format(
C:\Anaconda2\lib\site-packages\pymc3\model.pyc in __init__(self, type, owner, index, name, distribution, model, transform, total_size)
1092
1093 self.transformed = model.Var(
-> 1094 transformed_name, transform.apply(distribution), total_size=total_size)
1095
1096 normalRV = transform.backward(self.transformed)
C:\Anaconda2\lib\site-packages\pymc3\distributions\transforms.pyc in apply(self, dist)
30
31 def apply(self, dist):
---> 32 return TransformedDistribution.dist(dist, self)
33
34 def __str__(self):
C:\Anaconda2\lib\site-packages\pymc3\distributions\distribution.pyc in dist(cls, *args, **kwargs)
47 def dist(cls, *args, **kwargs):
48 dist = object.__new__(cls)
---> 49 dist.__init__(*args, **kwargs)
50 return dist
51
C:\Anaconda2\lib\site-packages\pymc3\distributions\transforms.pyc in __init__(self, dist, transform, *args, **kwargs)
55 arguments to Distribution"""
56 forward = transform.forward
---> 57 testval = forward(dist.default())
58
59 self.dist = dist
C:\Anaconda2\lib\site-packages\pymc3\distributions\distribution.pyc in default(self)
62
63 def default(self):
---> 64 return np.asarray(self.get_test_val(self.testval, self.defaults), self.dtype)
65
66 def get_test_val(self, val, defaults):
C:\Anaconda2\lib\site-packages\pymc3\distributions\distribution.pyc in get_test_val(self, val, defaults)
67 if val is None:
68 for v in defaults:
---> 69 if hasattr(self, v) and np.all(np.isfinite(self.getattr_value(v))):
70 return self.getattr_value(v)
71 else:
C:\Anaconda2\lib\site-packages\pymc3\distributions\distribution.pyc in getattr_value(self, val)
83
84 if isinstance(val, tt.TensorVariable):
---> 85 return val.tag.test_value
86
87 if isinstance(val, tt.TensorConstant):
AttributeError: 'scratchpad' object has no attribute 'test_value'
EDIT: My mistake, it seems like setting it to ignore solves the issue