!424 dock depthwiseconv2d

Merge pull request !424 from zhangbuxue/dock_depthwiseconv2d_ops
This commit is contained in:
mindspore-ci-bot 2020-04-18 11:12:29 +08:00 committed by Gitee
commit e64bc80094
7 changed files with 135 additions and 0 deletions

View File

@ -39,6 +39,9 @@ static std::map<string, string> tbe_func_adapter_map = {
{"reduce_min", "reduce_min_d"},
{"conv2d_backprop_filter", "conv2d_backprop_filter_d"},
{"conv2d_backprop_input", "conv2d_backprop_input_d"},
{"depthwise_conv2d_native", "depthwise_conv2d"},
{"depthwise_conv2d_native_backprop_filter", "depthwise_conv2d_backprop_filter_d"},
{"depthwise_conv2d_native_backprop_input", "depthwise_conv2d_backprop_input_d"},
{"top_kv2", "top_k"},
{"scatter_nd", "scatter_nd_d"},
{"tile", "tile_d"},

View File

@ -27,6 +27,8 @@ ConstInputToAttrInfoRegistry::ConstInputToAttrInfoRegistry() {
Register(prim::kPrimCast->name(), {1});
Register(prim::kPrimConv2DBackpropInput->name(), {2});
Register(prim::kPrimConv2DBackpropFilter->name(), {2});
Register(prim::kPrimDepthwiseConv2dNativeBackpropFilter->name(), {1});
Register(prim::kPrimDepthwiseConv2dNativeBackpropInput->name(), {0});
Register(prim::kPrimReshape->name(), {1});
Register(prim::kPrimReduceMax->name(), {1});
Register(prim::kPrimReduceMin->name(), {1});

View File

@ -133,3 +133,6 @@ from .arg_min_with_value import _arg_min_with_value_tbe
from .fused_mul_add import _fused_mul_add_tbe
from .fused_mul_add_n import _fused_mul_add_n_tbe
from .fused_mul_apply_momentum import _fused_mul_apply_momentum_tbe
from .depthwise_conv2d import _depthwise_conv2d_tbe
from .depthwise_conv2d_backprop_filter import _depthwise_conv2d_backprop_filter_tbe
from .depthwise_conv2d_backprop_input import _depthwise_conv2d_backprop_input_tbe

View File

@ -0,0 +1,44 @@
# Copyright 2020 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ============================================================================
"""DepthwiseConv2D op"""
from mindspore.ops.op_info_register import op_info_register, TBERegOp, DataType
depthwise_conv2d_op_info = TBERegOp("DepthwiseConv2dNative") \
.fusion_type("CONVLUTION") \
.async_flag(False) \
.binfile_name("depthwise_conv2d.so") \
.compute_cost(10) \
.kernel_name("depthwise_conv2d") \
.partial_flag(True) \
.attr("stride", "required", "listInt", "all") \
.attr("dilation", "required", "listInt", "all") \
.attr("pads", "required", "listInt", "all") \
.attr("data_format", "required", "str", "all") \
.attr("offset_a", "optional", "int", "all") \
.input(0, "x", False, "required", "all") \
.input(1, "filter", False, "required", "all") \
.input(2, "bias", False, "optional", "all") \
.input(3, "offset_w", False, "optional", "all") \
.output(0, "y", True, "required", "all") \
.dtype_format(DataType.F16_5HD, DataType.F16_C1HWNCoC0, DataType.F16_Default, DataType.F16_Default,
DataType.F16_5HD) \
.get_op_info()
@op_info_register(depthwise_conv2d_op_info)
def _depthwise_conv2d_tbe():
"""DepthwiseConv2D TBE register"""
return

View File

@ -0,0 +1,41 @@
# Copyright 2020 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ============================================================================
"""DepthwiseConv2DBackpropFilter op"""
from mindspore.ops.op_info_register import op_info_register, TBERegOp, DataType
depthwise_conv2d_backprop_filter_op_info = TBERegOp("DepthwiseConv2dNativeBackpropFilter") \
.fusion_type("CONVLUTION") \
.async_flag(False) \
.binfile_name("depthwise_conv2d_backprop_filter_d.so") \
.compute_cost(10) \
.kernel_name("depthwise_conv2d_backprop_filter_d") \
.partial_flag(True) \
.attr("filter_size", "required", "listInt", "all") \
.attr("stride", "required", "listInt", "all") \
.attr("dilation", "required", "listInt", "all") \
.attr("pads", "required", "str", "all") \
.attr("data_format", "required", "str", "all") \
.input(0, "input", False, "required", "all") \
.input(1, "out_backprop", False, "required", "all") \
.output(0, "filter_grad", False, "required", "all") \
.dtype_format(DataType.F16_5HD, DataType.F16_5HD, DataType.F32_C1HWNCoC0) \
.get_op_info()
@op_info_register(depthwise_conv2d_backprop_filter_op_info)
def _depthwise_conv2d_backprop_filter_tbe():
"""DepthwiseConv2DBackpropFilter TBE register"""
return

View File

@ -0,0 +1,41 @@
# Copyright 2020 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ============================================================================
"""DepthwiseConv2DBackpropInput op"""
from mindspore.ops.op_info_register import op_info_register, TBERegOp, DataType
depthwise_conv2d_backprop_input_op_info = TBERegOp("DepthwiseConv2dNativeBackpropInput") \
.fusion_type("CONVLUTION") \
.async_flag(False) \
.binfile_name("depthwise_conv2d_backprop_input_d.so") \
.compute_cost(10) \
.kernel_name("depthwise_conv2d_backprop_input_d") \
.partial_flag(True) \
.attr("input_size", "required", "listInt", "all") \
.attr("stride", "required", "listInt", "all") \
.attr("dilation", "required", "listInt", "all") \
.attr("pads", "required", "str", "all") \
.attr("data_format", "required", "str", "all") \
.input(0, "filter", False, "required", "all") \
.input(1, "out_backprop", False, "required", "all") \
.output(0, "input_grad", False, "required", "all") \
.dtype_format(DataType.F16_C1HWNCoC0, DataType.F16_5HD, DataType.F16_5HD) \
.get_op_info()
@op_info_register(depthwise_conv2d_backprop_input_op_info)
def _depthwise_conv2d_backprop_input_tbe():
"""DepthwiseConv2DBackpropInput TBE register"""
return

View File

@ -696,6 +696,7 @@ class DepthwiseConv2dNative(PrimitiveWithInfer):
dilation=1,
group=1):
"""init DepthwiseConv2dNative"""
self.init_prim_io_names(inputs=['x', 'w'], outputs=['output'])
validator.check_pad_value_by_mode(self.__class__.__name__, pad_mode, pad)
self.kernel_size = validator.check_type('kernel_size', kernel_size, (int, tuple))
if isinstance(kernel_size, int):