From: 박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 Date: Mon, 10 Sep 2018 02:08:39 +0000 (+0900) Subject: [enco] Support convolution layer with pad_h and pad_w (#1418) X-Git-Tag: nncc_backup~1880 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=58c50463d2ce1abcd7408bf487e9f3c936c8a8a6;p=platform%2Fcore%2Fml%2Fnnfw.git [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 --- 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);