Merge pull request !49 from yanzhenxiang2020/add_5_opstags/v0.3.0-alpha
| @@ -27,7 +27,6 @@ namespace kernel { | |||||
| constexpr auto kInitDataSetQueue = "InitDataSetQueue"; | constexpr auto kInitDataSetQueue = "InitDataSetQueue"; | ||||
| constexpr auto kInitData = "InitData"; | constexpr auto kInitData = "InitData"; | ||||
| constexpr auto kGetNext = "GetNext"; | constexpr auto kGetNext = "GetNext"; | ||||
| constexpr auto kDropoutGenMask = "DropoutGenMask"; | |||||
| constexpr auto kPrint = "Print"; | constexpr auto kPrint = "Print"; | ||||
| constexpr auto kOutputTypes = "output_types"; | constexpr auto kOutputTypes = "output_types"; | ||||
| @@ -340,8 +340,23 @@ bool IsNopNode(const AnfNodePtr &node) { | |||||
| return true; | return true; | ||||
| } | } | ||||
| bool IsAllNopNode(session::KernelGraph *const graph) { | |||||
| MS_EXCEPTION_IF_NULL(graph); | |||||
| auto execution_order = graph->execution_order(); | |||||
| for (auto &cnode : execution_order) { | |||||
| MS_EXCEPTION_IF_NULL(cnode); | |||||
| if (!IsNopNode(cnode)) { | |||||
| return false; | |||||
| } | |||||
| } | |||||
| return true; | |||||
| } | |||||
| void HideNopNode(session::KernelGraph *const graph) { | void HideNopNode(session::KernelGraph *const graph) { | ||||
| MS_EXCEPTION_IF_NULL(graph); | MS_EXCEPTION_IF_NULL(graph); | ||||
| if (IsAllNopNode(graph) == true) { | |||||
| return; | |||||
| } | |||||
| auto execution_order = graph->execution_order(); | auto execution_order = graph->execution_order(); | ||||
| MS_LOG(INFO) << "nop node info (Before Remove) size: " << execution_order.size(); | MS_LOG(INFO) << "nop node info (Before Remove) size: " << execution_order.size(); | ||||
| std::vector<CNodePtr> new_nodes; | std::vector<CNodePtr> new_nodes; | ||||
| @@ -357,6 +372,9 @@ void HideNopNode(session::KernelGraph *const graph) { | |||||
| void RemoveNopNode(session::KernelGraph *const graph) { | void RemoveNopNode(session::KernelGraph *const graph) { | ||||
| MS_EXCEPTION_IF_NULL(graph); | MS_EXCEPTION_IF_NULL(graph); | ||||
| if (IsAllNopNode(graph) == true) { | |||||
| return; | |||||
| } | |||||
| bool changed = true; | bool changed = true; | ||||
| while (changed) { | while (changed) { | ||||
| changed = false; | changed = false; | ||||
| @@ -17,3 +17,8 @@ from .init_data_set_queue import _init_data_set_queue_aicpu | |||||
| from .dropout_genmask import _dropout_genmask_aicpu | from .dropout_genmask import _dropout_genmask_aicpu | ||||
| from .get_next import _get_next_aicpu | from .get_next import _get_next_aicpu | ||||
| from .print_tensor import _print_aicpu | from .print_tensor import _print_aicpu | ||||
| from .is_finite import _is_finite_aicpu | |||||
| from .reshape import _reshape_aicpu | |||||
| from .flatten import _flatten_aicpu | |||||
| from .squeeze import _squeeze_aicpu | |||||
| from .expand_dims import _expand_dims_aicpu | |||||
| @@ -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. | |||||
| # ============================================================================ | |||||
| """ExpandDims op""" | |||||
| from mindspore.ops.op_info_register import op_info_register, AiCPURegOp, DataType | |||||
| expand_dims_op_info = AiCPURegOp("ExpandDims") \ | |||||
| .fusion_type("OPAQUE") \ | |||||
| .input(0, "x", "required") \ | |||||
| .output(0, "y", "required") \ | |||||
| .dtype_format(DataType.BOOL_Default, DataType.BOOL_Default) \ | |||||
| .dtype_format(DataType.I8_Default, DataType.I8_Default) \ | |||||
| .dtype_format(DataType.I16_Default, DataType.I16_Default) \ | |||||
| .dtype_format(DataType.I32_Default, DataType.I32_Default) \ | |||||
| .dtype_format(DataType.I64_Default, DataType.I64_Default) \ | |||||
| .dtype_format(DataType.U8_Default, DataType.U8_Default) \ | |||||
| .dtype_format(DataType.U16_Default, DataType.U16_Default) \ | |||||
| .dtype_format(DataType.U32_Default, DataType.U32_Default) \ | |||||
| .dtype_format(DataType.U64_Default, DataType.U64_Default) \ | |||||
| .dtype_format(DataType.F16_Default, DataType.F16_Default) \ | |||||
| .dtype_format(DataType.F32_Default, DataType.F32_Default) \ | |||||
| .dtype_format(DataType.F64_Default, DataType.F64_Default) \ | |||||
| .dtype_format(DataType.BOOL_NCHW, DataType.BOOL_NCHW) \ | |||||
| .dtype_format(DataType.I8_NCHW, DataType.I8_NCHW) \ | |||||
| .dtype_format(DataType.I16_NCHW, DataType.I16_NCHW) \ | |||||
| .dtype_format(DataType.I32_NCHW, DataType.I32_NCHW) \ | |||||
| .dtype_format(DataType.I64_NCHW, DataType.I64_NCHW) \ | |||||
| .dtype_format(DataType.U8_NCHW, DataType.U8_NCHW) \ | |||||
| .dtype_format(DataType.U16_NCHW, DataType.U16_NCHW) \ | |||||
| .dtype_format(DataType.U32_NCHW, DataType.U32_NCHW) \ | |||||
| .dtype_format(DataType.U64_NCHW, DataType.U64_NCHW) \ | |||||
| .dtype_format(DataType.F16_NCHW, DataType.F16_NCHW) \ | |||||
| .dtype_format(DataType.F32_NCHW, DataType.F32_NCHW) \ | |||||
| .dtype_format(DataType.F64_NCHW, DataType.F64_NCHW) \ | |||||
| .get_op_info() | |||||
| @op_info_register(expand_dims_op_info) | |||||
| def _expand_dims_aicpu(): | |||||
| """ExpandDims AiCPU register""" | |||||
| return | |||||
| @@ -0,0 +1,48 @@ | |||||
| # 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. | |||||
| # ============================================================================ | |||||
| """Flatten op""" | |||||
| from mindspore.ops.op_info_register import op_info_register, AiCPURegOp, DataType | |||||
| flatten_op_info = AiCPURegOp("Flatten") \ | |||||
| .fusion_type("OPAQUE") \ | |||||
| .input(0, "x", "required") \ | |||||
| .output(0, "y", "required") \ | |||||
| .dtype_format(DataType.I8_Default, DataType.I8_Default) \ | |||||
| .dtype_format(DataType.I16_Default, DataType.I16_Default) \ | |||||
| .dtype_format(DataType.I32_Default, DataType.I32_Default) \ | |||||
| .dtype_format(DataType.I64_Default, DataType.I64_Default) \ | |||||
| .dtype_format(DataType.U8_Default, DataType.U8_Default) \ | |||||
| .dtype_format(DataType.U16_Default, DataType.U16_Default) \ | |||||
| .dtype_format(DataType.U32_Default, DataType.U32_Default) \ | |||||
| .dtype_format(DataType.U64_Default, DataType.U64_Default) \ | |||||
| .dtype_format(DataType.F16_Default, DataType.F16_Default) \ | |||||
| .dtype_format(DataType.F32_Default, DataType.F32_Default) \ | |||||
| .dtype_format(DataType.I8_NCHW, DataType.I8_NCHW) \ | |||||
| .dtype_format(DataType.I16_NCHW, DataType.I16_NCHW) \ | |||||
| .dtype_format(DataType.I32_NCHW, DataType.I32_NCHW) \ | |||||
| .dtype_format(DataType.I64_NCHW, DataType.I64_NCHW) \ | |||||
| .dtype_format(DataType.U8_NCHW, DataType.U8_NCHW) \ | |||||
| .dtype_format(DataType.U16_NCHW, DataType.U16_NCHW) \ | |||||
| .dtype_format(DataType.U32_NCHW, DataType.U32_NCHW) \ | |||||
| .dtype_format(DataType.U64_NCHW, DataType.U64_NCHW) \ | |||||
| .dtype_format(DataType.F16_NCHW, DataType.F16_NCHW) \ | |||||
| .dtype_format(DataType.F32_NCHW, DataType.F32_NCHW) \ | |||||
| .get_op_info() | |||||
| @op_info_register(flatten_op_info) | |||||
| def _flatten_aicpu(): | |||||
| """Flatten AiCPU register""" | |||||
| return | |||||
| @@ -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. | |||||
| # ============================================================================ | |||||
| """IsFinite op""" | |||||
| from mindspore.ops.op_info_register import op_info_register, AiCPURegOp, DataType | |||||
| is_finite_op_info = AiCPURegOp("IsFinite") \ | |||||
| .fusion_type("OPAQUE") \ | |||||
| .input(0, "x", "required") \ | |||||
| .output(0, "y", "required") \ | |||||
| .dtype_format(DataType.BOOL_Default, DataType.BOOL_Default) \ | |||||
| .dtype_format(DataType.I8_Default, DataType.BOOL_Default) \ | |||||
| .dtype_format(DataType.I16_Default, DataType.BOOL_Default) \ | |||||
| .dtype_format(DataType.I32_Default, DataType.BOOL_Default) \ | |||||
| .dtype_format(DataType.I64_Default, DataType.BOOL_Default) \ | |||||
| .dtype_format(DataType.U8_Default, DataType.BOOL_Default) \ | |||||
| .dtype_format(DataType.U16_Default, DataType.BOOL_Default) \ | |||||
| .dtype_format(DataType.U32_Default, DataType.BOOL_Default) \ | |||||
| .dtype_format(DataType.U64_Default, DataType.BOOL_Default) \ | |||||
| .dtype_format(DataType.F16_Default, DataType.BOOL_Default) \ | |||||
| .dtype_format(DataType.F32_Default, DataType.BOOL_Default) \ | |||||
| .dtype_format(DataType.F64_Default, DataType.BOOL_Default) \ | |||||
| .dtype_format(DataType.BOOL_NCHW, DataType.BOOL_NCHW) \ | |||||
| .dtype_format(DataType.I8_NCHW, DataType.BOOL_NCHW) \ | |||||
| .dtype_format(DataType.I16_NCHW, DataType.BOOL_NCHW) \ | |||||
| .dtype_format(DataType.I32_NCHW, DataType.BOOL_NCHW) \ | |||||
| .dtype_format(DataType.I64_NCHW, DataType.BOOL_NCHW) \ | |||||
| .dtype_format(DataType.U8_NCHW, DataType.BOOL_NCHW) \ | |||||
| .dtype_format(DataType.U16_NCHW, DataType.BOOL_NCHW) \ | |||||
| .dtype_format(DataType.U32_NCHW, DataType.BOOL_NCHW) \ | |||||
| .dtype_format(DataType.U64_NCHW, DataType.BOOL_NCHW) \ | |||||
| .dtype_format(DataType.F16_NCHW, DataType.BOOL_NCHW) \ | |||||
| .dtype_format(DataType.F32_NCHW, DataType.BOOL_NCHW) \ | |||||
| .dtype_format(DataType.F64_NCHW, DataType.BOOL_NCHW) \ | |||||
| .get_op_info() | |||||
| @op_info_register(is_finite_op_info) | |||||
| def _is_finite_aicpu(): | |||||
| """IsFinite AiCPU register""" | |||||
| return | |||||
| @@ -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. | |||||
| # ============================================================================ | |||||
| """Reshape op""" | |||||
| from mindspore.ops.op_info_register import op_info_register, AiCPURegOp, DataType | |||||
| reshape_op_info = AiCPURegOp("Reshape") \ | |||||
| .fusion_type("OPAQUE") \ | |||||
| .input(0, "x", "required") \ | |||||
| .output(0, "y", "required") \ | |||||
| .dtype_format(DataType.BOOL_Default, DataType.BOOL_Default) \ | |||||
| .dtype_format(DataType.I8_Default, DataType.I8_Default) \ | |||||
| .dtype_format(DataType.I16_Default, DataType.I16_Default) \ | |||||
| .dtype_format(DataType.I32_Default, DataType.I32_Default) \ | |||||
| .dtype_format(DataType.I64_Default, DataType.I64_Default) \ | |||||
| .dtype_format(DataType.U8_Default, DataType.U8_Default) \ | |||||
| .dtype_format(DataType.U16_Default, DataType.U16_Default) \ | |||||
| .dtype_format(DataType.U32_Default, DataType.U32_Default) \ | |||||
| .dtype_format(DataType.U64_Default, DataType.U64_Default) \ | |||||
| .dtype_format(DataType.F16_Default, DataType.F16_Default) \ | |||||
| .dtype_format(DataType.F32_Default, DataType.F32_Default) \ | |||||
| .dtype_format(DataType.F64_Default, DataType.F64_Default) \ | |||||
| .dtype_format(DataType.BOOL_NCHW, DataType.BOOL_NCHW) \ | |||||
| .dtype_format(DataType.I8_NCHW, DataType.I8_NCHW) \ | |||||
| .dtype_format(DataType.I16_NCHW, DataType.I16_NCHW) \ | |||||
| .dtype_format(DataType.I32_NCHW, DataType.I32_NCHW) \ | |||||
| .dtype_format(DataType.I64_NCHW, DataType.I64_NCHW) \ | |||||
| .dtype_format(DataType.U8_NCHW, DataType.U8_NCHW) \ | |||||
| .dtype_format(DataType.U16_NCHW, DataType.U16_NCHW) \ | |||||
| .dtype_format(DataType.U32_NCHW, DataType.U32_NCHW) \ | |||||
| .dtype_format(DataType.U64_NCHW, DataType.U64_NCHW) \ | |||||
| .dtype_format(DataType.F16_NCHW, DataType.F16_NCHW) \ | |||||
| .dtype_format(DataType.F32_NCHW, DataType.F32_NCHW) \ | |||||
| .dtype_format(DataType.F64_NCHW, DataType.F64_NCHW) \ | |||||
| .get_op_info() | |||||
| @op_info_register(reshape_op_info) | |||||
| def _reshape_aicpu(): | |||||
| """Rpeshape AiCPU register""" | |||||
| return | |||||
| @@ -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. | |||||
| # ============================================================================ | |||||
| """Squeeze op""" | |||||
| from mindspore.ops.op_info_register import op_info_register, AiCPURegOp, DataType | |||||
| squeeze_op_info = AiCPURegOp("Squeeze") \ | |||||
| .fusion_type("OPAQUE") \ | |||||
| .input(0, "x", "required") \ | |||||
| .output(0, "y", "required") \ | |||||
| .dtype_format(DataType.BOOL_Default, DataType.BOOL_Default) \ | |||||
| .dtype_format(DataType.I8_Default, DataType.I8_Default) \ | |||||
| .dtype_format(DataType.I16_Default, DataType.I16_Default) \ | |||||
| .dtype_format(DataType.I32_Default, DataType.I32_Default) \ | |||||
| .dtype_format(DataType.I64_Default, DataType.I64_Default) \ | |||||
| .dtype_format(DataType.U8_Default, DataType.U8_Default) \ | |||||
| .dtype_format(DataType.U16_Default, DataType.U16_Default) \ | |||||
| .dtype_format(DataType.U32_Default, DataType.U32_Default) \ | |||||
| .dtype_format(DataType.U64_Default, DataType.U64_Default) \ | |||||
| .dtype_format(DataType.F16_Default, DataType.F16_Default) \ | |||||
| .dtype_format(DataType.F32_Default, DataType.F32_Default) \ | |||||
| .dtype_format(DataType.F64_Default, DataType.F64_Default) \ | |||||
| .dtype_format(DataType.BOOL_NCHW, DataType.BOOL_NCHW) \ | |||||
| .dtype_format(DataType.I8_NCHW, DataType.I8_NCHW) \ | |||||
| .dtype_format(DataType.I16_NCHW, DataType.I16_NCHW) \ | |||||
| .dtype_format(DataType.I32_NCHW, DataType.I32_NCHW) \ | |||||
| .dtype_format(DataType.I64_NCHW, DataType.I64_NCHW) \ | |||||
| .dtype_format(DataType.U8_NCHW, DataType.U8_NCHW) \ | |||||
| .dtype_format(DataType.U16_NCHW, DataType.U16_NCHW) \ | |||||
| .dtype_format(DataType.U32_NCHW, DataType.U32_NCHW) \ | |||||
| .dtype_format(DataType.U64_NCHW, DataType.U64_NCHW) \ | |||||
| .dtype_format(DataType.F16_NCHW, DataType.F16_NCHW) \ | |||||
| .dtype_format(DataType.F32_NCHW, DataType.F32_NCHW) \ | |||||
| .dtype_format(DataType.F64_NCHW, DataType.F64_NCHW) \ | |||||
| .get_op_info() | |||||
| @op_info_register(squeeze_op_info) | |||||
| def _squeeze_aicpu(): | |||||
| """Squeeze AiCPU register""" | |||||
| return | |||||
| @@ -61,9 +61,6 @@ from .reduce_mean_d import _reduce_mean_d_tbe | |||||
| from .scatter_nd import _scatter_nd_tbe | from .scatter_nd import _scatter_nd_tbe | ||||
| from .scatter_nd_d import _scatter_nd_d_tbe | from .scatter_nd_d import _scatter_nd_d_tbe | ||||
| from .reduce_mean import _reduce_mean_tbe | from .reduce_mean import _reduce_mean_tbe | ||||
| from .reshape import _reshape_tbe | |||||
| from .expand_dims import _expand_dims_tbe | |||||
| from .squeeze import _squeeze_tbe | |||||
| from .tile import _tile_tbe | from .tile import _tile_tbe | ||||
| from .atomic_addr_clean import _atomic_addr_clean_tbe | from .atomic_addr_clean import _atomic_addr_clean_tbe | ||||
| from .gather_v2 import _gather_v2_tbe | from .gather_v2 import _gather_v2_tbe | ||||
| @@ -599,4 +599,13 @@ class DataType: | |||||
| F32_NCHW = ("float32", "NCHW") | F32_NCHW = ("float32", "NCHW") | ||||
| F32_NHWC = ("float32", "NHWC") | F32_NHWC = ("float32", "NHWC") | ||||
| F32_HWCN = ("float32", "HWCN") | F32_HWCN = ("float32", "HWCN") | ||||
| F64_None = ("float64", "") | |||||
| F64_Default = ("float64", "DefaultFormat") | |||||
| F64_5HD = ("float64", "NC1HWC0") | |||||
| F64_FracZ = ("float64", "FracZ") | |||||
| F64_FracNZ = ("float64", "FRACTAL_NZ") | |||||
| F64_C1HWNCoC0 = ("float64", "C1HWNCoC0") | |||||
| F64_NCHW = ("float64", "NCHW") | |||||
| F64_NHWC = ("float64", "NHWC") | |||||
| F64_HWCN = ("float64", "HWCN") | |||||
| @@ -0,0 +1,114 @@ | |||||
| # Copyright 2019 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. | |||||
| # ============================================================================ | |||||
| from mindspore import Tensor | |||||
| from mindspore.ops import operations as P | |||||
| import mindspore.nn as nn | |||||
| from mindspore.common.api import ms_function | |||||
| import numpy as np | |||||
| import mindspore.context as context | |||||
| context.set_context(mode=context.PYNATIVE_MODE, device_target="Ascend") | |||||
| class Net(nn.Cell): | |||||
| def __init__(self): | |||||
| super(Net, self).__init__() | |||||
| self.expand_dims = P.ExpandDims() | |||||
| def construct(self, tensor, dim): | |||||
| return self.expand_dims(tensor, dim) | |||||
| def test_net_bool(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.bool) | |||||
| net = Net() | |||||
| output = net(Tensor(x), -1) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.expand_dims(x, -1))) | |||||
| def test_net_int8(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int8) | |||||
| net = Net() | |||||
| output = net(Tensor(x), -1) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.expand_dims(x, -1))) | |||||
| def test_net_uint8(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint8) | |||||
| net = Net() | |||||
| output = net(Tensor(x), -1) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.expand_dims(x, -1))) | |||||
| def test_net_int16(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int16) | |||||
| net = Net() | |||||
| output = net(Tensor(x), -1) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.expand_dims(x, -1))) | |||||
| def test_net_uint16(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint16) | |||||
| net = Net() | |||||
| output = net(Tensor(x), -1) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.expand_dims(x, -1))) | |||||
| def test_net_int32(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int32) | |||||
| net = Net() | |||||
| output = net(Tensor(x), -1) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.expand_dims(x, -1))) | |||||
| def test_net_uint32(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint32) | |||||
| net = Net() | |||||
| output = net(Tensor(x), -1) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.expand_dims(x, -1))) | |||||
| def test_net_int64(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int64) | |||||
| net = Net() | |||||
| output = net(Tensor(x), -1) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.expand_dims(x, -1))) | |||||
| def test_net_uint64(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint64) | |||||
| net = Net() | |||||
| output = net(Tensor(x), -1) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.expand_dims(x, -1))) | |||||
| def test_net_float16(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.float16) | |||||
| net = Net() | |||||
| output = net(Tensor(x), -1) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.expand_dims(x, -1))) | |||||
| def test_net_float32(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.float32) | |||||
| net = Net() | |||||
| output = net(Tensor(x), -1) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.expand_dims(x, -1))) | |||||
| def test_net_float64(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.float64) | |||||
| net = Net() | |||||
| output = net(Tensor(x), -1) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.expand_dims(x, -1))) | |||||
| @@ -0,0 +1,99 @@ | |||||
| # Copyright 2019 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. | |||||
| # ============================================================================ | |||||
| from mindspore import Tensor | |||||
| from mindspore.ops import operations as P | |||||
| import mindspore.nn as nn | |||||
| import numpy as np | |||||
| import mindspore.context as context | |||||
| context.set_context(mode=context.PYNATIVE_MODE, device_target="Ascend") | |||||
| class Net(nn.Cell): | |||||
| def __init__(self): | |||||
| super(Net, self).__init__() | |||||
| self.flatten = P.Flatten() | |||||
| def construct(self, tensor): | |||||
| return self.flatten(tensor) | |||||
| def test_net_int8(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int8) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.flatten())) | |||||
| def test_net_uint8(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint8) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.flatten())) | |||||
| def test_net_int16(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int16) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.flatten())) | |||||
| def test_net_uint16(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint16) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.flatten())) | |||||
| def test_net_int32(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int32) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.flatten())) | |||||
| def test_net_uint32(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint32) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.flatten())) | |||||
| def test_net_int64(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int64) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.flatten())) | |||||
| def test_net_uint64(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint64) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.flatten())) | |||||
| def test_net_float16(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.float16) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.flatten())) | |||||
| def test_net_float32(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.float32) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.flatten())) | |||||
| @@ -0,0 +1,114 @@ | |||||
| # Copyright 2019 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. | |||||
| # ============================================================================ | |||||
| from mindspore import Tensor | |||||
| from mindspore.ops import operations as P | |||||
| import mindspore.nn as nn | |||||
| from mindspore.common.api import ms_function | |||||
| import numpy as np | |||||
| import mindspore.context as context | |||||
| context.set_context(mode=context.PYNATIVE_MODE, device_target="Ascend") | |||||
| class Net(nn.Cell): | |||||
| def __init__(self): | |||||
| super(Net, self).__init__() | |||||
| self.isfinite = P.IsFinite() | |||||
| def construct(self, tensor): | |||||
| return self.isfinite(tensor) | |||||
| def test_net_bool(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.bool) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.isfinite(x))) | |||||
| def test_net_int8(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int8) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.isfinite(x))) | |||||
| def test_net_uint8(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint8) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.isfinite(x))) | |||||
| def test_net_int16(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int16) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.isfinite(x))) | |||||
| def test_net_uint16(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint16) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.isfinite(x))) | |||||
| def test_net_int32(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int32) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.isfinite(x))) | |||||
| def test_net_uint32(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint32) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.isfinite(x))) | |||||
| def test_net_int64(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int64) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.isfinite(x))) | |||||
| def test_net_uint64(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint64) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.isfinite(x))) | |||||
| def test_net_float16(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.float16) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.isfinite(x))) | |||||
| def test_net_float32(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.float32) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.isfinite(x))) | |||||
| def test_net_float64(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.float64) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.isfinite(x))) | |||||
| @@ -0,0 +1,114 @@ | |||||
| # Copyright 2019 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. | |||||
| # ============================================================================ | |||||
| from mindspore import Tensor | |||||
| from mindspore.ops import operations as P | |||||
| import mindspore.nn as nn | |||||
| from mindspore.common.api import ms_function | |||||
| import numpy as np | |||||
| import mindspore.context as context | |||||
| context.set_context(mode=context.PYNATIVE_MODE, device_target="Ascend") | |||||
| class Net(nn.Cell): | |||||
| def __init__(self): | |||||
| super(Net, self).__init__() | |||||
| self.reshape = P.Reshape() | |||||
| def construct(self, tensor): | |||||
| return self.reshape(tensor, (4,4)) | |||||
| def test_net_bool(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.bool) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.reshape(x, (4,4)))) | |||||
| def test_net_int8(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int8) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.reshape(x, (4,4)))) | |||||
| def test_net_uint8(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint8) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.reshape(x, (4,4)))) | |||||
| def test_net_int16(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int16) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.reshape(x, (4,4)))) | |||||
| def test_net_uint16(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint16) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.reshape(x, (4,4)))) | |||||
| def test_net_int32(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int32) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.reshape(x, (4,4)))) | |||||
| def test_net_uint32(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint32) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.reshape(x, (4,4)))) | |||||
| def test_net_int64(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int64) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.reshape(x, (4,4)))) | |||||
| def test_net_uint64(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint64) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.reshape(x, (4,4)))) | |||||
| def test_net_float16(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.float16) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.reshape(x, (4,4)))) | |||||
| def test_net_float32(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.float32) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.reshape(x, (4,4)))) | |||||
| def test_net_float64(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.float64) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == np.reshape(x, (4,4)))) | |||||
| @@ -0,0 +1,113 @@ | |||||
| # Copyright 2019 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. | |||||
| # ============================================================================ | |||||
| from mindspore import Tensor | |||||
| from mindspore.ops import operations as P | |||||
| import mindspore.nn as nn | |||||
| import numpy as np | |||||
| import mindspore.context as context | |||||
| context.set_context(mode=context.PYNATIVE_MODE, device_target="Ascend") | |||||
| class Net(nn.Cell): | |||||
| def __init__(self): | |||||
| super(Net, self).__init__() | |||||
| self.squeeze = P.Squeeze() | |||||
| def construct(self, tensor): | |||||
| return self.squeeze(tensor) | |||||
| def test_net_bool(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.bool) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.squeeze())) | |||||
| def test_net_int8(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int8) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.squeeze())) | |||||
| def test_net_uint8(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint8) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.squeeze())) | |||||
| def test_net_int16(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int16) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.squeeze())) | |||||
| def test_net_uint16(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint16) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.squeeze())) | |||||
| def test_net_int32(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int32) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.squeeze())) | |||||
| def test_net_uint32(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint32) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.squeeze())) | |||||
| def test_net_int64(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.int64) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.squeeze())) | |||||
| def test_net_uint64(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.uint64) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.squeeze())) | |||||
| def test_net_float16(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.float16) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.squeeze())) | |||||
| def test_net_float32(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.float32) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.squeeze())) | |||||
| def test_net_float64(): | |||||
| x = np.random.randn(1, 16, 1, 1).astype(np.float64) | |||||
| net = Net() | |||||
| output = net(Tensor(x)) | |||||
| print(output.asnumpy()) | |||||
| assert(np.all(output.asnumpy() == x.squeeze())) | |||||