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

fix test in FAST_COMPILE mode.

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