提交 9af0d517 authored 作者: Nicolas Ballas's avatar Nicolas Ballas 提交者: Pascal Lamblin

minor changes

上级 81771815
...@@ -110,7 +110,7 @@ def conv2d(img, ...@@ -110,7 +110,7 @@ def conv2d(img,
filters = filters[:, :, ::-1, ::-1] filters = filters[:, :, ::-1, ::-1]
### FIXME input shape/kernel shape ### FIXME input shape/kernel shape
conv_op = Conv2d(imshp=input_shape, kshp=filter_shape, bsize=batch_size, conv_op = Conv2d(imshp=input_shape, kshp=filter_shape, bsize=batch_size,
border_mode="valid", subsample=subsample) border_mode=border_mode, subsample=subsample)
return conv_op(img, filters) return conv_op(img, filters)
...@@ -354,15 +354,15 @@ def replace_conv_with_cudnn(convop, inputs): ...@@ -354,15 +354,15 @@ def replace_conv_with_cudnn(convop, inputs):
direction_hint='forward') direction_hint='forward')
return rval return rval
if (isinstance(convop, Conv2d_gradWeights)): if (isinstance(convop, Conv2d_gradWeights)):
rval = dnn_conv(inp1, inp2, rval = dnn_conv(inp1.dimshuffle(1, 0, 2, 3), inp2,
border_mode=node.op.border_mode, border_mode=convop.border_mode,
subsample=node.op.subsample, subsample=convop.subsample,
direction_hint='bprop weights') direction_hint='bprop weights')
return rval return rval
if (isinstance(convop, Conv2d_gradInputs)): if (isinstance(convop, Conv2d_gradInputs)):
rval = dnn_conv(inp1, inp2, rval = dnn_conv(inp1, inp2,
border_mode=node.op.border_mode, border_mode=convop.border_mode,
subsample=node.op.subsample, subsample=convop.subsample,
direction_hint='bprop inputs') direction_hint='bprop inputs')
return rval return rval
...@@ -428,7 +428,7 @@ def replace_convgradinputs_withcorrmm(convop, inputs): ...@@ -428,7 +428,7 @@ def replace_convgradinputs_withcorrmm(convop, inputs):
kern, topgrad, shape = inputs kern, topgrad, shape = inputs
rval = GpuCorrMM_gradInputs(border_mode=convop.border_mode, rval = GpuCorrMM_gradInputs(border_mode=convop.border_mode,
subsample=convop.subsample)( subsample=convop.subsample)(
gpu_contiguous(kern), gpu_contiguous(topgrad)) gpu_contiguous(kern), gpu_contiguous(topgrad), shape)
return rval return rval
......
...@@ -32,7 +32,8 @@ class TestConv2d(unittest.TestCase): ...@@ -32,7 +32,8 @@ class TestConv2d(unittest.TestCase):
inputs = shared(inputs_val) inputs = shared(inputs_val)
filters = shared(filters_val) filters = shared(filters_val)
c_ref = conv_ref.conv2d(inputs, filters, c_ref = conv_ref.conv2d(inputs, filters,
border_mode="valid", subsample=subsample) border_mode="valid",
subsample=subsample)
c = conv.conv2d(inputs, filters, c = conv.conv2d(inputs, filters,
border_mode="valid", subsample=subsample) border_mode="valid", subsample=subsample)
...@@ -43,6 +44,7 @@ class TestConv2d(unittest.TestCase): ...@@ -43,6 +44,7 @@ class TestConv2d(unittest.TestCase):
res_ref = f_ref() res_ref = f_ref()
res = f() res = f()
print res_ref.shape, res.shape
utt.assert_allclose(res_ref, res) utt.assert_allclose(res_ref, res)
if verify_grad: if verify_grad:
utt.verify_grad(conv.Conv2d(border_mode="valid", utt.verify_grad(conv.Conv2d(border_mode="valid",
...@@ -52,29 +54,35 @@ class TestConv2d(unittest.TestCase): ...@@ -52,29 +54,35 @@ class TestConv2d(unittest.TestCase):
def test_valid(self): def test_valid(self):
mode = mode_with_gpu mode = mode_with_gpu
if dnn_available(): # if dnn_available():
self.run_conv(inputs_shape=(16, 1, 2, 2), # self.run_conv(inputs_shape=(16, 1, 2, 2),
filters_shape=(10, 1, 2, 2),
verify_grad=False)
# self.run_conv(inputs_shape=(16, 1, 8, 8),
# filters_shape=(10, 1, 2, 2), # filters_shape=(10, 1, 2, 2),
# subsample=(2, 2),
# verify_grad=False) # verify_grad=False)
# # self.run_conv(inputs_shape=(16, 1, 8, 8),
# # filters_shape=(10, 1, 2, 2),
# # subsample=(2, 2),
# # verify_grad=False)
# self.run_conv(inputs_shape=(16, 1, 2, 2), # self.run_conv(inputs_shape=(16, 1, 2, 2),
# filters_shape=(10, 1, 2, 2), # filters_shape=(10, 1, 2, 2),
# verify_grad=True) # verify_grad=True)
# self.run_conv(inputs_shape=(16, 1, 8, 8), # # self.run_conv(inputs_shape=(16, 1, 8, 8),
# filters_shape=(10, 1, 2, 2), # # filters_shape=(10, 1, 2, 2),
# subsample=(2, 2), # # subsample=(2, 2),
# verify_grad=True) # # verify_grad=True)
mode = mode.excluding('cudnn') mode = mode.excluding('cudnn')
self.run_conv(inputs_shape=(16, 1, 2, 2), self.run_conv(inputs_shape=(16, 1, 2, 2),
filters_shape=(10, 1, 2, 2), filters_shape=(10, 1, 2, 2),
verify_grad=False, mode=mode) verify_grad=False, mode=mode)
self.run_conv(inputs_shape=(16, 1, 2, 2),
filters_shape=(10, 1, 2, 2),
subsample=(1, 1),
verify_grad=True,mode=mode)
# self.run_conv(inputs_shape=(16, 1, 8, 8), # self.run_conv(inputs_shape=(16, 1, 8, 8),
# filters_shape=(10, 1, 2, 2), # filters_shape=(10, 1, 4, 4),
# subsample=(2, 2), # subsample=(2, 2),
# verify_grad=False,mode=mode) # verify_grad=False,mode=mode)
# self.run_conv(inputs_shape=(16, 1, 2, 2), # self.run_conv(inputs_shape=(16, 1, 2, 2),
# filters_shape=(10, 1, 2, 2), # filters_shape=(10, 1, 2, 2),
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论