Browse Source

fix MirrorPadGrad

tags/v0.6.0-beta
xutianchun 5 years ago
parent
commit
cf98f5c0b5
4 changed files with 56 additions and 4 deletions
  1. +1
    -1
      mindspore/ops/_grad/grad_nn_ops.py
  2. +1
    -0
      mindspore/ops/_op_impl/aicpu/__init__.py
  3. +52
    -0
      mindspore/ops/_op_impl/aicpu/mirror_pad_grad.py
  4. +2
    -3
      mindspore/ops/operations/_grad_ops.py

+ 1
- 1
mindspore/ops/_grad/grad_nn_ops.py View File

@@ -624,7 +624,7 @@ def get_bprop_mirror_pad(self):
mirror_pad_grad = G.MirrorPadGrad(self.mode)

def bprop(x, paddings, out, dout):
dx = mirror_pad_grad(dout, paddings, x)
dx = mirror_pad_grad(dout, paddings)
return (dx, zeros_like(paddings))

return bprop


+ 1
- 0
mindspore/ops/_op_impl/aicpu/__init__.py View File

@@ -33,6 +33,7 @@ from .rnnt_loss import _rnnt_loss_aicpu
from .random_categorical import _random_categorical_aicpu
from .cast import _cast_aicpu
from .mirror_pad import _mirror_pad_aicpu
from .mirror_pad_grad import _mirror_pad_grad_aicpu
from .normal import _normal_aicpu
from .gamma import _gamma_aicpu
from .poisson import _poisson_aicpu


+ 52
- 0
mindspore/ops/_op_impl/aicpu/mirror_pad_grad.py View File

@@ -0,0 +1,52 @@
# 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.
# ============================================================================

"""MirrorPadGrad op"""
from mindspore.ops.op_info_register import op_info_register, AiCPURegOp, DataType
mirror_pad_grad_op_info = AiCPURegOp("MirrorPadGrad") \
.fusion_type("OPAQUE") \
.input(0, "x", "required") \
.input(1, "paddings", "required") \
.output(0, "y", "required") \
.attr("mode", "str") \
.dtype_format(DataType.I8_Default, DataType.I32_Default, DataType.I8_Default) \
.dtype_format(DataType.I16_Default, DataType.I32_Default, DataType.I16_Default) \
.dtype_format(DataType.I32_Default, DataType.I32_Default, DataType.I32_Default) \
.dtype_format(DataType.I64_Default, DataType.I32_Default, DataType.I64_Default) \
.dtype_format(DataType.U8_Default, DataType.I32_Default, DataType.U8_Default) \
.dtype_format(DataType.U16_Default, DataType.I32_Default, DataType.U16_Default) \
.dtype_format(DataType.U32_Default, DataType.I32_Default, DataType.U32_Default) \
.dtype_format(DataType.U64_Default, DataType.I32_Default, DataType.U64_Default) \
.dtype_format(DataType.F16_Default, DataType.I32_Default, DataType.F16_Default) \
.dtype_format(DataType.F32_Default, DataType.I32_Default, DataType.F32_Default) \
.dtype_format(DataType.F64_Default, DataType.I32_Default, DataType.F64_Default) \
.dtype_format(DataType.I8_Default, DataType.I64_Default, DataType.I8_Default) \
.dtype_format(DataType.I16_Default, DataType.I64_Default, DataType.I16_Default) \
.dtype_format(DataType.I32_Default, DataType.I64_Default, DataType.I32_Default) \
.dtype_format(DataType.I64_Default, DataType.I64_Default, DataType.I64_Default) \
.dtype_format(DataType.U8_Default, DataType.I64_Default, DataType.U8_Default) \
.dtype_format(DataType.U16_Default, DataType.I64_Default, DataType.U16_Default) \
.dtype_format(DataType.U32_Default, DataType.I64_Default, DataType.U32_Default) \
.dtype_format(DataType.U64_Default, DataType.I64_Default, DataType.U64_Default) \
.dtype_format(DataType.F16_Default, DataType.I64_Default, DataType.F16_Default) \
.dtype_format(DataType.F32_Default, DataType.I64_Default, DataType.F32_Default) \
.dtype_format(DataType.F64_Default, DataType.I64_Default, DataType.F64_Default) \
.get_op_info()


@op_info_register(mirror_pad_grad_op_info)
def _mirror_pad_grad_aicpu():
"""MirrorPadGrad AiCPU register"""
return

+ 2
- 3
mindspore/ops/operations/_grad_ops.py View File

@@ -1152,11 +1152,10 @@ class MirrorPadGrad(PrimitiveWithInfer):
validator.check_string('mode', mode, ['REFLECT', 'SYMMETRIC'], self.name)
self.mode = mode

def __infer__(self, dout, paddings, x):
def __infer__(self, dout, paddings):
validator.check_subclass("dout", dout['dtype'], mstype.tensor, self.name)
validator.check_subclass("paddings", paddings['dtype'], mstype.tensor, self.name)
validator.check_subclass("input_x", x['dtype'], mstype.tensor, self.name)
return {'shape': x['shape'],
return {'shape': dout['shape'],
'dtype': dout['dtype'],
'value': None}



Loading…
Cancel
Save