提交 b18629bd authored 作者: Pascal Lamblin's avatar Pascal Lamblin

Test img2neibs with only float32 on GPU, other dtypes on CPU

上级 aa9590f9
......@@ -20,6 +20,7 @@ else:
class T_GpuImages2Neibs(theano.sandbox.test_neighbours.T_Images2Neibs):
mode = mode_with_gpu
op = GpuImages2Neibs
dtypes = ['float32']
if __name__ == '__main__':
unittest.main()
......@@ -18,9 +18,11 @@ else:
if not theano.config.cxx:
raise SkipTest("G++ not available, so we need to skip this test.")
class T_Images2Neibs(unittest_tools.InferShapeTester):
mode = mode_without_gpu
op = Images2Neibs
dtypes = ['int64', 'float32', 'float64']
def test_neibs(self):
for shape, pshape in [((100, 40, 18, 18), (2, 2)),
......@@ -29,17 +31,23 @@ class T_Images2Neibs(unittest_tools.InferShapeTester):
((10, 40, 68, 66), (34, 33))
]:
for border in ['valid', 'ignore_borders']:
images = shared(numpy.arange(numpy.prod(shape)).reshape(shape))
for dtype in self.dtypes:
images = shared(
numpy.arange(numpy.prod(shape), dtype=dtype
).reshape(shape))
neib_shape = T.as_tensor_variable(pshape)
f = function([], images2neibs(images, neib_shape, mode=border),
f = function([],
images2neibs(images, neib_shape, mode=border),
mode=self.mode)
#print images.get_value(borrow=True)
neibs = f()
#print neibs
g = function([], neibs2images(neibs, neib_shape, images.shape),
g = function([],
neibs2images(neibs, neib_shape, images.shape),
mode=self.mode)
if border in ['valid']:
assert any([isinstance(node.op, self.op)
for node in f.maker.fgraph.toposort()])
......@@ -48,7 +56,10 @@ class T_Images2Neibs(unittest_tools.InferShapeTester):
def test_neibs_manual(self):
shape = (2, 3, 4, 4)
images = shared(numpy.arange(numpy.prod(shape)).reshape(shape))
for dtype in self.dtypes:
images = shared(
numpy.arange(numpy.prod(shape), dtype=dtype
).reshape(shape))
neib_shape = T.as_tensor_variable((2, 2))
for border in ['valid', 'ignore_borders']:
......@@ -89,15 +100,19 @@ class T_Images2Neibs(unittest_tools.InferShapeTester):
def test_neibs_manual_step(self):
shape = (2, 3, 5, 5)
for dtype in self.dtypes:
images = shared(numpy.asarray(numpy.arange(numpy.prod(
shape)).reshape(shape), dtype='float32'))
shape)).reshape(shape), dtype=dtype))
neib_shape = T.as_tensor_variable((3, 3))
neib_step = T.as_tensor_variable((2, 2))
for border in ['valid', 'ignore_borders']:
f = function([], images2neibs(images, neib_shape, neib_step, mode=border),
f = function([],
images2neibs(images, neib_shape, neib_step,
mode=border),
mode=self.mode)
neibs = f()
if border in ['valid']:
assert self.op in [type(node.op)
for node in f.maker.fgraph.toposort()]
......@@ -136,15 +151,21 @@ class T_Images2Neibs(unittest_tools.InferShapeTester):
def test_neibs_bad_shape(self):
shape = (2, 3, 10, 10)
images = shared(numpy.arange(numpy.prod(shape)).reshape(shape))
for dtype in self.dtypes:
images = shared(numpy.arange(
numpy.prod(shape), dtype=dtype
).reshape(shape))
for neib_shape in [(3, 2), (2, 3)]:
neib_shape = T.as_tensor_variable(neib_shape)
f = function([], images2neibs(images, neib_shape), mode=self.mode)
f = function([], images2neibs(images, neib_shape),
mode=self.mode)
self.assertRaises(TypeError, f)
#Test that ignore border work in that case.
f = function([], images2neibs(images, neib_shape, mode='ignore_borders'),
f = function([],
images2neibs(images, neib_shape,
mode='ignore_borders'),
mode=self.mode)
f()
......@@ -197,8 +218,10 @@ class T_Images2Neibs(unittest_tools.InferShapeTester):
[(1, 1, 1045, 5), (3, 3), (3, 3), None],
]):
for dtype in self.dtypes:
images = shared(numpy.asarray(numpy.arange(numpy.prod(
shape)).reshape(shape), dtype='float32'))
shape)).reshape(shape), dtype=dtype))
neib_shape = T.as_tensor_variable(neib_shape)
neib_step = T.as_tensor_variable(neib_step)
expected = numpy.asarray(expected)
......@@ -210,9 +233,10 @@ class T_Images2Neibs(unittest_tools.InferShapeTester):
if expected.size > 1:
for i in range(shape[0] * shape[1]):
assert numpy.allclose(neibs[i * expected.shape[0]:
assert numpy.allclose(
neibs[i * expected.shape[0]:
(i + 1) * expected.shape[0], :],
expected + 25 * i), mode_idx
expected + 25 * i), "wrap_centered"
assert self.op in [type(node.op)
for node in f.maker.fgraph.toposort()]
......@@ -223,7 +247,11 @@ class T_Images2Neibs(unittest_tools.InferShapeTester):
def test_neibs_bad_shape_wrap_centered(self):
shape = (2, 3, 10, 10)
images = shared(numpy.arange(numpy.prod(shape)).reshape(shape))
for dtype in self.dtypes:
images = shared(numpy.arange(
numpy.prod(shape), dtype=dtype
).reshape(shape))
for neib_shape in [(3, 2), (2, 3)]:
neib_shape = T.as_tensor_variable(neib_shape)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论