提交 6c8f1a15 authored 作者: Arnaud Bergeron's avatar Arnaud Bergeron

Refactor how the parameters are iterated over to reduce the total time of the…

Refactor how the parameters are iterated over to reduce the total time of the test. (This covers less cases, but should be almost equivalent.)
上级 6f4a125d
...@@ -24,70 +24,59 @@ else: ...@@ -24,70 +24,59 @@ else:
class TestDnnConv2d(test_abstract_conv.TestConv2d): class TestDnnConv2d(test_abstract_conv.TestConv2d):
def setUp(self): def setUp(self):
super(TestDnnConv2d, self).setUp() super(TestDnnConv2d, self).setUp()
# provide_shape is not used by the CuDNN impementation
self.provide_shape = [False]
self.shared = gpu_shared self.shared = gpu_shared
def test_dnn_conv(self): def tcase(self, i, f, s, b, flip, provide_shape):
if not dnn_available(): if not dnn_available():
raise SkipTest(cuda.dnn.dnn_available.msg) raise SkipTest(cuda.dnn.dnn_available.msg)
mode = mode_with_gpu mode = mode_with_gpu
# provide_shape is not used by the CuDNN impementation o = self.get_output_shape(i, f, s, b)
provide_shape = False self.run_fwd(inputs_shape=i, filters_shape=f, subsample=s,
for (i, f), s, b, flip in itertools.product( verify_grad=True, mode=mode,
zip(self.inputs_shapes, self.filters_shapes), provide_shape=provide_shape, border_mode=b,
self.subsamples, filter_flip=flip, target_op=GpuDnnConv)
self.border_modes, self.run_gradweight(inputs_shape=i, filters_shape=f,
self.filter_flip): output_shape=o, subsample=s,
o = self.get_output_shape(i, f, s, b) verify_grad=True, mode=mode,
self.run_fwd(inputs_shape=i, filters_shape=f, subsample=s, provide_shape=provide_shape, border_mode=b,
verify_grad=True, mode=mode, filter_flip=flip, target_op=GpuDnnConvGradW)
provide_shape=provide_shape, border_mode=b, self.run_gradinput(inputs_shape=i, filters_shape=f,
filter_flip=flip, target_op=GpuDnnConv) output_shape=o, subsample=s,
self.run_gradweight(inputs_shape=i, filters_shape=f, verify_grad=True, mode=mode,
output_shape=o, subsample=s, provide_shape=provide_shape, border_mode=b,
verify_grad=True, mode=mode, filter_flip=flip, target_op=GpuDnnConvGradI)
provide_shape=provide_shape, border_mode=b,
filter_flip=flip, target_op=GpuDnnConvGradW)
self.run_gradinput(inputs_shape=i, filters_shape=f,
output_shape=o, subsample=s,
verify_grad=True, mode=mode,
provide_shape=provide_shape, border_mode=b,
filter_flip=flip, target_op=GpuDnnConvGradI)
class TestCorrMMConv2d(test_abstract_conv.TestConv2d): class TestCorrMMConv2d(test_abstract_conv.TestConv2d):
def setUp(self): def setUp(self):
super(TestCorrMMConv2d, self).setUp() super(TestCorrMMConv2d, self).setUp()
self.shared = gpu_shared self.shared = gpu_shared
self.mode = mode_with_gpu.excluding('cudnn')
def test_gpucorrmm_conv(self): def test_gpucorrmm_conv(self, i, f, s, b, flip, provide_shape):
mode = mode_with_gpu.excluding('cudnn') mode = self.mode
for (i, f), s, b, flip, provide_shape in itertools.product( o = self.get_output_shape(i, f, s, b)
zip(self.inputs_shapes, self.filters_shapes), self.run_fwd(inputs_shape=i, filters_shape=f, subsample=s,
self.subsamples, verify_grad=True, mode=mode,
self.border_modes, provide_shape=provide_shape, border_mode=b,
self.filter_flip, filter_flip=flip,
[False, True]): target_op=(GpuCorrMM,
GpuCorrMM_gradWeights,
o = self.get_output_shape(i, f, s, b) GpuCorrMM_gradInputs))
self.run_fwd(inputs_shape=i, filters_shape=f, subsample=s, self.run_gradweight(inputs_shape=i, filters_shape=f,
verify_grad=True, mode=mode, output_shape=o, subsample=s,
provide_shape=provide_shape, border_mode=b, verify_grad=True, mode=mode,
filter_flip=flip, provide_shape=provide_shape, border_mode=b,
target_op=(GpuCorrMM, filter_flip=flip,
GpuCorrMM_gradWeights, target_op=GpuCorrMM_gradWeights)
GpuCorrMM_gradInputs)) self.run_gradinput(inputs_shape=i, filters_shape=f,
self.run_gradweight(inputs_shape=i, filters_shape=f, output_shape=o, subsample=s,
output_shape=o, subsample=s, verify_grad=True, mode=mode,
verify_grad=True, mode=mode, provide_shape=provide_shape, border_mode=b,
provide_shape=provide_shape, border_mode=b, filter_flip=flip,
filter_flip=flip, target_op=GpuCorrMM_gradInputs)
target_op=GpuCorrMM_gradWeights)
self.run_gradinput(inputs_shape=i, filters_shape=f,
output_shape=o, subsample=s,
verify_grad=True, mode=mode,
provide_shape=provide_shape, border_mode=b,
filter_flip=flip,
target_op=GpuCorrMM_gradInputs)
class TestDnnConvTypes(test_abstract_conv.TestConvTypes): class TestDnnConvTypes(test_abstract_conv.TestConvTypes):
......
...@@ -15,34 +15,29 @@ class TestDnnConv2d(test_abstract_conv.TestConv2d): ...@@ -15,34 +15,29 @@ class TestDnnConv2d(test_abstract_conv.TestConv2d):
def setUp(self): def setUp(self):
super(TestDnnConv2d, self).setUp() super(TestDnnConv2d, self).setUp()
self.shared = gpuarray_shared_constructor self.shared = gpuarray_shared_constructor
# provide_shape is not used by the CuDNN impementation
self.provide_shape = [False]
def test_dnn_conv(self): def tcase(self, i, f, s, b, flip, provide_shape):
if not dnn_available(test_ctx_name): if not dnn_available(test_ctx_name):
raise SkipTest(dnn_available.msg) raise SkipTest(dnn_available.msg)
mode = mode_with_gpu mode = mode_with_gpu
# provide_shape is not used by the CuDNN impementation
provide_shape = False o = self.get_output_shape(i, f, s, b)
self.run_fwd(inputs_shape=i, filters_shape=f, subsample=s,
for (i, f), s, b, flip in itertools.product( verify_grad=True, mode=mode,
zip(self.inputs_shapes, self.filters_shapes), provide_shape=provide_shape, border_mode=b,
self.subsamples, filter_flip=flip, target_op=GpuDnnConv)
self.border_modes, self.run_gradweight(inputs_shape=i, filters_shape=f,
self.filter_flip): output_shape=o, subsample=s,
o = self.get_output_shape(i, f, s, b) verify_grad=True, mode=mode,
self.run_fwd(inputs_shape=i, filters_shape=f, subsample=s, provide_shape=provide_shape, border_mode=b,
verify_grad=True, mode=mode, filter_flip=flip, target_op=GpuDnnConvGradW)
provide_shape=provide_shape, border_mode=b, self.run_gradinput(inputs_shape=i, filters_shape=f,
filter_flip=flip, target_op=GpuDnnConv) output_shape=o, subsample=s,
self.run_gradweight(inputs_shape=i, filters_shape=f, verify_grad=True, mode=mode,
output_shape=o, subsample=s, provide_shape=provide_shape, border_mode=b,
verify_grad=True, mode=mode, filter_flip=flip, target_op=GpuDnnConvGradI)
provide_shape=provide_shape, border_mode=b,
filter_flip=flip, target_op=GpuDnnConvGradW)
self.run_gradinput(inputs_shape=i, filters_shape=f,
output_shape=o, subsample=s,
verify_grad=True, mode=mode,
provide_shape=provide_shape, border_mode=b,
filter_flip=flip, target_op=GpuDnnConvGradI)
class TestDnnConvTypes(test_abstract_conv.TestConvTypes): class TestDnnConvTypes(test_abstract_conv.TestConvTypes):
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论