提交 c52d77ef authored 作者: Frederic Bastien's avatar Frederic Bastien

fix test in FAST_COMPILE mode.

上级 180f5f24
...@@ -2,6 +2,7 @@ import unittest ...@@ -2,6 +2,7 @@ import unittest
import numpy import numpy
import theano
from theano import function, config from theano import function, config
from theano import scalar from theano import scalar
import theano.tensor as tensor import theano.tensor as tensor
...@@ -13,15 +14,17 @@ from theano.tests import unittest_tools as utt ...@@ -13,15 +14,17 @@ from theano.tests import unittest_tools as utt
class T_max_and_argmax(unittest.TestCase): class T_max_and_argmax(unittest.TestCase):
def test_optimization(self): def test_optimization(self):
#If we use only the max output, we should replace this op with a faster one. #If we use only the max output, we should replace this op with a faster one.
mode = theano.compile.mode.get_default_mode().including('canonicalize','fast_run')
data = numpy.asarray(numpy.random.rand(2,3),dtype=config.floatX) data = numpy.asarray(numpy.random.rand(2,3),dtype=config.floatX)
n = tensor.matrix() n = tensor.matrix()
f = function([n], tensor.max_and_argmax(n,0)[0]) f = function([n], tensor.max_and_argmax(n,0)[0], mode=mode)
topo = f.maker.env.toposort() topo = f.maker.env.toposort()
assert len(topo)==1 assert len(topo)==1
assert isinstance(topo[0].op, CAReduce) assert isinstance(topo[0].op, CAReduce)
f = function([n], tensor.max_and_argmax(n,0)) f = function([n], tensor.max_and_argmax(n,0), mode=mode)
topo = f.maker.env.toposort() topo = f.maker.env.toposort()
assert len(topo)==1 assert len(topo)==1
assert isinstance(topo[0].op, tensor.MaxAndArgmax) assert isinstance(topo[0].op, tensor.MaxAndArgmax)
...@@ -30,19 +33,20 @@ class T_max_and_argmax(unittest.TestCase): ...@@ -30,19 +33,20 @@ class T_max_and_argmax(unittest.TestCase):
class T_min_max(unittest.TestCase): class T_min_max(unittest.TestCase):
def setUp(self): def setUp(self):
utt.seed_rng() utt.seed_rng()
self.mode = theano.compile.mode.get_default_mode().including('canonicalize','fast_run')
def test_optimization_max(self): def test_optimization_max(self):
data = numpy.asarray(numpy.random.rand(2,3),dtype=config.floatX) data = numpy.asarray(numpy.random.rand(2,3),dtype=config.floatX)
n = tensor.matrix() n = tensor.matrix()
f = function([n],tensor.max(n,0)) f = function([n],tensor.max(n,0), mode=self.mode)
topo = f.maker.env.toposort() topo = f.maker.env.toposort()
assert len(topo)==1 assert len(topo)==1
assert isinstance(topo[0].op,CAReduce) assert isinstance(topo[0].op,CAReduce)
f(data) f(data)
f = function([n],tensor.max(-n,0)) f = function([n],tensor.max(-n,0), mode=self.mode)
topo = f.maker.env.toposort() topo = f.maker.env.toposort()
assert len(topo)==2 assert len(topo)==2
assert isinstance(topo[0].op, Elemwise) assert isinstance(topo[0].op, Elemwise)
...@@ -50,7 +54,7 @@ class T_min_max(unittest.TestCase): ...@@ -50,7 +54,7 @@ class T_min_max(unittest.TestCase):
assert isinstance(topo[1].op,CAReduce) assert isinstance(topo[1].op,CAReduce)
f(data) f(data)
f = function([n],-tensor.max(n,0)) f = function([n],-tensor.max(n,0), mode=self.mode)
topo = f.maker.env.toposort() topo = f.maker.env.toposort()
assert len(topo)==2 assert len(topo)==2
assert isinstance(topo[0].op,CAReduce) assert isinstance(topo[0].op,CAReduce)
...@@ -58,7 +62,7 @@ class T_min_max(unittest.TestCase): ...@@ -58,7 +62,7 @@ class T_min_max(unittest.TestCase):
assert isinstance(topo[1].op.scalar_op, scalar.Neg) assert isinstance(topo[1].op.scalar_op, scalar.Neg)
f(data) f(data)
f = function([n],-tensor.max(-n,0)) f = function([n],-tensor.max(-n,0), mode=self.mode)
topo = f.maker.env.toposort() topo = f.maker.env.toposort()
assert len(topo)==1 assert len(topo)==1
assert isinstance(topo[0].op,CAReduce)#min assert isinstance(topo[0].op,CAReduce)#min
...@@ -68,14 +72,14 @@ class T_min_max(unittest.TestCase): ...@@ -68,14 +72,14 @@ class T_min_max(unittest.TestCase):
data = numpy.asarray(numpy.random.rand(2,3),dtype=config.floatX) data = numpy.asarray(numpy.random.rand(2,3),dtype=config.floatX)
n = tensor.matrix() n = tensor.matrix()
f = function([n],tensor.min(n,0)) f = function([n],tensor.min(n,0), mode=self.mode)
topo = f.maker.env.toposort() topo = f.maker.env.toposort()
assert len(topo)==1 assert len(topo)==1
assert isinstance(topo[0].op,CAReduce) assert isinstance(topo[0].op,CAReduce)
f(data) f(data)
#test variant with neg to make sure we optimize correctly #test variant with neg to make sure we optimize correctly
f = function([n],tensor.min(-n,0)) f = function([n],tensor.min(-n,0), mode=self.mode)
topo = f.maker.env.toposort() topo = f.maker.env.toposort()
assert len(topo)==2 assert len(topo)==2
assert isinstance(topo[0].op,CAReduce)#max assert isinstance(topo[0].op,CAReduce)#max
...@@ -83,7 +87,7 @@ class T_min_max(unittest.TestCase): ...@@ -83,7 +87,7 @@ class T_min_max(unittest.TestCase):
assert isinstance(topo[1].op.scalar_op, scalar.Neg) assert isinstance(topo[1].op.scalar_op, scalar.Neg)
f(data) f(data)
f = function([n],-tensor.min(n,0)) f = function([n],-tensor.min(n,0), mode=self.mode)
topo = f.maker.env.toposort() topo = f.maker.env.toposort()
assert len(topo)==2 assert len(topo)==2
assert isinstance(topo[0].op, Elemwise) assert isinstance(topo[0].op, Elemwise)
...@@ -91,7 +95,7 @@ class T_min_max(unittest.TestCase): ...@@ -91,7 +95,7 @@ class T_min_max(unittest.TestCase):
assert isinstance(topo[1].op,CAReduce)#max assert isinstance(topo[1].op,CAReduce)#max
f(data) f(data)
f = function([n],-tensor.min(-n,0)) f = function([n],-tensor.min(-n,0), mode=self.mode)
topo = f.maker.env.toposort() topo = f.maker.env.toposort()
assert len(topo)==1 assert len(topo)==1
assert isinstance(topo[0].op,CAReduce)#max assert isinstance(topo[0].op,CAReduce)#max
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论