提交 e2ece259 authored 作者: Frederic's avatar Frederic

Test the complete fix gh-689

We fix for atleast 158 loops of that problem.
上级 871eee1b
...@@ -1207,6 +1207,36 @@ class test_fusion(unittest.TestCase): ...@@ -1207,6 +1207,36 @@ class test_fusion(unittest.TestCase):
# Test it on some dummy values # Test it on some dummy values
f(*[range(i, 4 + i) for i in range(35)]) f(*[range(i, 4 + i) for i in range(35)])
def test_pickle_big_fusion(self):
"""In the past, pickle of Composite generated in tha case
crashed with max recusion limit. So we where not able to
generate C code in that case.
"""
factors = []
sd = tensor.dscalar()
means = tensor.dvector()
cst_05 = theano.tensor.constant(.5)
cst_m05 = theano.tensor.constant(2)
cst_2 = theano.tensor.constant(2)
cst_m2 = theano.tensor.constant(-2)
ones = theano.tensor.constant(numpy.ones(10))
n = 85
if theano.config.mode in ["DebugMode", "DEBUG_MODE"]:
n = 10
for i in range(n):
f = (cst_m05 * sd ** cst_m2 * (ones - means[i]) ** cst_2 +
cst_05 * tensor.log(cst_05 * (sd ** cst_m2) / numpy.pi))
factors.append(tensor.sum(f))
logp = tensor.add(*factors)
vars = [sd, means]
dlogp = function(vars, [theano.grad(logp, v) for v in vars])
dlogp(2, numpy.random.rand(n))
def speed_fusion(self, shared_fn=shared, gpu=False, s=None): def speed_fusion(self, shared_fn=shared, gpu=False, s=None):
""" """
param type s: a slice object param type s: a slice object
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论