提交 24f06dd1 authored 作者: Frederic Bastien's avatar Frederic Bastien

fix new test in debug and fast compile mode. Also fix them for sparse type.

上级 16ba9807
...@@ -262,7 +262,8 @@ def makeSharedTester(shared_constructor_, ...@@ -262,7 +262,8 @@ def makeSharedTester(shared_constructor_,
#Test that we forward the input #Test that we forward the input
specify_shape_fct = theano.function([],x1_specify_shape) specify_shape_fct = theano.function([],x1_specify_shape)
assert numpy.all(specify_shape_fct()==x1_2) assert numpy.all(self.ref_fct(specify_shape_fct())==
self.ref_fct(x1_2))
topo_specify = specify_shape_fct.maker.env.toposort() topo_specify = specify_shape_fct.maker.env.toposort()
assert len(topo_specify)==2 assert len(topo_specify)==2
...@@ -270,6 +271,7 @@ def makeSharedTester(shared_constructor_, ...@@ -270,6 +271,7 @@ def makeSharedTester(shared_constructor_,
shape_constant_fct = theano.function([],x1_specify_shape.shape) shape_constant_fct = theano.function([],x1_specify_shape.shape)
assert numpy.all(shape_constant_fct()==shape_op_fct()) assert numpy.all(shape_constant_fct()==shape_op_fct())
topo_cst = shape_constant_fct.maker.env.toposort() topo_cst = shape_constant_fct.maker.env.toposort()
if theano.config.mode!='FAST_COMPILE':
assert len(topo_cst)==0 assert len(topo_cst)==0
#Test that we can replace with values of the different shape #Test that we can replace with values of the different shape
...@@ -278,7 +280,11 @@ def makeSharedTester(shared_constructor_, ...@@ -278,7 +280,11 @@ def makeSharedTester(shared_constructor_,
self.assertRaises(AssertionError, specify_shape_fct) self.assertRaises(AssertionError, specify_shape_fct)
#No assertion will be raised as the Op is removed from the graph #No assertion will be raised as the Op is removed from the graph
#when their is optimization
if theano.config.mode not in ['FAST_COMPILE','DebugMode','DEBUG_MODE']:
shape_constant_fct() shape_constant_fct()
else:
self.assertRaises(AssertionError, shape_constant_fct)
def test_specify_shape_inplace(self): def test_specify_shape_inplace(self):
...@@ -305,9 +311,12 @@ def makeSharedTester(shared_constructor_, ...@@ -305,9 +311,12 @@ def makeSharedTester(shared_constructor_,
f() f()
#[Gemm{inplace}(<TensorType(float64, matrix)>, 0.01, <TensorType(float64, matrix)>, <TensorType(float64, matrix)>, 2e-06)] #[Gemm{inplace}(<TensorType(float64, matrix)>, 0.01, <TensorType(float64, matrix)>, <TensorType(float64, matrix)>, 2e-06)]
#print topo #print topo
assert sum([isinstance(node.op,tensor.blas.Gemm) or node.op.__class__.__name__=="GpuGemm"for node in topo])==1 if theano.config.mode!='FAST_COMPILE':
assert sum([node.op.__class__.__name__ in ["Gemm","GpuGemm","StructuredDot"] for node in topo])==1
assert all(node.op == tensor.blas.gemm_inplace for node in topo if isinstance(node.op,tensor.blas.Gemm)) assert all(node.op == tensor.blas.gemm_inplace for node in topo if isinstance(node.op,tensor.blas.Gemm))
assert all(node.op.inplace for node in topo if node.op.__class__.__name__ == "GpuGemm")
#Their is no inplace gemm for sparse
#assert all(node.op.inplace for node in topo if node.op.__class__.__name__ == "StructuredDot")
s_shared_specify = tensor.specify_shape(s_shared,s_shared.value.shape) s_shared_specify = tensor.specify_shape(s_shared,s_shared.value.shape)
#now test with the specify shape op in the output #now test with the specify shape op in the output
...@@ -318,9 +327,10 @@ def makeSharedTester(shared_constructor_, ...@@ -318,9 +327,10 @@ def makeSharedTester(shared_constructor_,
print topo print topo
shp=f() shp=f()
assert numpy.all(shp == (40,40)) assert numpy.all(shp == (40,40))
assert sum([isinstance(node.op,tensor.blas.Gemm) or node.op.__class__.__name__=="GpuGemm"for node in topo])==1 if theano.config.mode!='FAST_COMPILE':
assert sum([node.op.__class__.__name__ in ["Gemm","GpuGemm","StructuredDot"] for node in topo])==1
assert all(node.op == tensor.blas.gemm_inplace for node in topo if isinstance(node.op,tensor.blas.Gemm)) assert all(node.op == tensor.blas.gemm_inplace for node in topo if isinstance(node.op,tensor.blas.Gemm))
assert all(node.op.inplace for node in topo if node.op.__class__.__name__ == "GpuGemm")
#now test with the specify shape op in the inputs and outputs #now test with the specify shape op in the inputs and outputs
a_shared = tensor.specify_shape(a_shared,a_shared.value.shape) a_shared = tensor.specify_shape(a_shared,a_shared.value.shape)
b_shared = tensor.specify_shape(b_shared,b_shared.value.shape) b_shared = tensor.specify_shape(b_shared,b_shared.value.shape)
...@@ -332,8 +342,10 @@ def makeSharedTester(shared_constructor_, ...@@ -332,8 +342,10 @@ def makeSharedTester(shared_constructor_,
print topo print topo
shp=f() shp=f()
assert numpy.all(shp == (40,40)) assert numpy.all(shp == (40,40))
assert sum([isinstance(node.op,tensor.blas.Gemm) or node.op.__class__.__name__=="GpuGemm"for node in topo])==1 if theano.config.mode!='FAST_COMPILE':
assert sum([node.op.__class__.__name__ in ["Gemm","GpuGemm","StructuredDot"] for node in topo])==1
assert all(node.op == tensor.blas.gemm_inplace for node in topo if isinstance(node.op,tensor.blas.Gemm)) assert all(node.op == tensor.blas.gemm_inplace for node in topo if isinstance(node.op,tensor.blas.Gemm))
assert all(node.op.inplace for node in topo if node.op.__class__.__name__ == "GpuGemm")
return SharedTester return SharedTester
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论