From 58c50463d2ce1abcd7408bf487e9f3c936c8a8a6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=A2=85=ED=98=84/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Staff=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Mon, 10 Sep 2018 11:08:39 +0900 Subject: [PATCH] [enco] Support convolution layer with pad_h and pad_w (#1418) * [enco] Support convolution layer with pad_h and pad_w This commit extends caffe frontend to support convolution layer with pad_h and pad_w parameters. Signed-off-by: Jonghyun Park * Update comment --- contrib/enco/frontend/caffe/src/ConvolutionSpec.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/contrib/enco/frontend/caffe/src/ConvolutionSpec.cpp b/contrib/enco/frontend/caffe/src/ConvolutionSpec.cpp index 0088ce3..c06678c 100644 --- a/contrib/enco/frontend/caffe/src/ConvolutionSpec.cpp +++ b/contrib/enco/frontend/caffe/src/ConvolutionSpec.cpp @@ -53,16 +53,23 @@ uint32_t ConvolutionSpec::pad(uint32_t spatial_axis) const { assert(spatial_axis < num_spatial_axes()); - // TODO Support pad_h/pad_w parameters - assert(!_param.has_pad_h()); - assert(!_param.has_pad_w()); - if (_param.pad().size() == 0) { + if (_param.has_pad_h() || _param.has_pad_w()) + { + assert(num_spatial_axes() == 2); + return (spatial_axis == 0) ? _param.pad_h() : _param.pad_w(); + } // NOTE default pad is 0 return 0; } + // NOTE pad and pad_h/pad_w cannot be specified at the same time + // Please refer to Caffe for details. You may find the relevant implementation + // from BaseConvolutionLayer::LayerSetUp in base_conv_layer.cpp. + assert(!_param.has_pad_h()); + assert(!_param.has_pad_w()); + if (_param.pad().size() == 1) { return _param.pad(0); -- 2.7.4