!424 dock depthwiseconv2d
Merge pull request !424 from zhangbuxue/dock_depthwiseconv2d_ops
This commit is contained in:
commit
e64bc80094
|
@ -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"},
|
||||
|
|
|
@ -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});
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue