diff --git a/tools/common.py b/tools/common.py index 8b8e74c8242d609416181f43208928ab213b454f..8642ad4a99810e102257997b552957670ec907d7 100644 --- a/tools/common.py +++ b/tools/common.py @@ -17,6 +17,7 @@ import hashlib import inspect import re import os + import six diff --git a/tools/converter.py b/tools/converter.py index 839d16e7e2d3f72467bc299ee7a7a77ecca0cea8..172708f89a792df82290564f5712d0cb37386bff 100644 --- a/tools/converter.py +++ b/tools/converter.py @@ -25,11 +25,14 @@ import yaml import sh_commands from enum import Enum +sys.path.insert(0, "tools/python") # noqa from common import * from device import DeviceWrapper, DeviceManager -from python.utils import config_parser -from python import convert -from python import encrypt +from utils import config_parser +import convert +import encrypt + +from dana.dana_util import DanaUtil ################################ # set environment diff --git a/tools/generate_data.py b/tools/generate_data.py index 6371a17d941052a4703dfd1db554441f8a97081b..b80f0c20c9964b7e02c04b6d313f55e87a00cc20 100644 --- a/tools/generate_data.py +++ b/tools/generate_data.py @@ -13,7 +13,9 @@ # limitations under the License. import argparse +import sys import numpy as np +import re import common import six diff --git a/tools/layers_validate.py b/tools/layers_validate.py index 534b3441dc6ad98e88f58639748b21557d686908..8b8b29289dd751c7ddf07f131dbe360283a19eae 100644 --- a/tools/layers_validate.py +++ b/tools/layers_validate.py @@ -12,21 +12,19 @@ # See the License for the specific language governing permissions and # limitations under the License. -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - import argparse import copy import os +import sys import yaml -from python.py_proto import mace_pb2 -from python.transform.base_converter import ConverterUtil -from python.transform.base_converter import MaceKeyword -from python.transform.base_converter import MaceOp -from python.transform.hexagon_converter import HexagonOp -from python.utils.util import mace_check +sys.path.insert(0, "tools/python") # noqa +from py_proto import mace_pb2 +from transform.base_converter import ConverterUtil +from transform.base_converter import MaceKeyword +from transform.base_converter import MaceOp +from transform.hexagon_converter import HexagonOp +from utils.util import mace_check def normalize_op_name(name): diff --git a/tools/python/convert.py b/tools/python/convert.py index 7ca33a3bfd036d8c2c8a59a4a8332a658810a2f4..24ad303bbdab272f07cce455c3d9c78620154bbb 100644 --- a/tools/python/convert.py +++ b/tools/python/convert.py @@ -22,19 +22,20 @@ from __future__ import print_function import argparse import sys import numpy as np - -from python.utils import config_parser -from python.utils.config_parser import DataFormat -from python.utils.config_parser import DeviceType -from python.utils.config_parser import Platform -from python.utils import util -from python.utils.util import mace_check -from python.utils.config_parser import normalize_model_config -from python.utils.config_parser import ModelKeys -from python.py_proto import mace_pb2 -from python.transform import base_converter as cvt -from python.transform import transformer -from python.visualize import visualize_model +import shutil +import tempfile +from utils import config_parser +from utils.config_parser import DataFormat +from utils.config_parser import DeviceType +from utils.config_parser import Platform +from utils import util +from utils.util import mace_check +from utils.config_parser import normalize_model_config +from utils.config_parser import ModelKeys +from py_proto import mace_pb2 +from transform import base_converter as cvt +from transform import transformer +from visualize import visualize_model def transpose_shape(shape, dst_order): @@ -161,16 +162,16 @@ def convert_model(conf): print("Transform model to one that can better run on device") platform = conf[ModelKeys.platform] if platform == Platform.TENSORFLOW: - from python.transform import tensorflow_converter + from transform import tensorflow_converter converter = tensorflow_converter.TensorflowConverter( option, conf["model_file_path"]) elif platform == Platform.CAFFE: - from python.transform import caffe_converter + from transform import caffe_converter converter = caffe_converter.CaffeConverter(option, conf["model_file_path"], conf["weight_file_path"]) elif platform == Platform.ONNX: - from python.transform import onnx_converter + from transform import onnx_converter converter = onnx_converter.OnnxConverter(option, conf["model_file_path"]) else: @@ -184,14 +185,14 @@ def convert_model(conf): runtime = conf[ModelKeys.runtime] if runtime in [DeviceType.HEXAGON, DeviceType.HTA]: - from python.transform import hexagon_converter + from transform import hexagon_converter converter = hexagon_converter.HexagonConverter( option, output_graph_def, quantize_activation_info) output_graph_def = converter.run() elif runtime == DeviceType.APU: mace_check(platform == Platform.TENSORFLOW, "apu only support model from tensorflow") - from python.transform import apu_converter + from transform import apu_converter converter = apu_converter.ApuConverter( option, output_graph_def, quantize_activation_info) output_graph_def = converter.run() diff --git a/tools/python/encrypt.py b/tools/python/encrypt.py index ec57a182fce4573857b89686c24bba0a7eb4c6ae..6a28fe2f5deef0ff6ba663fe4eab80e66b2cdde0 100644 --- a/tools/python/encrypt.py +++ b/tools/python/encrypt.py @@ -21,15 +21,14 @@ import datetime import os import hashlib from jinja2 import Environment, FileSystemLoader - -from python.py_proto import mace_pb2 -from python.utils import device -from python.utils import util -from python.utils.util import mace_check -from python.utils.util import MaceLogger -from python.utils import config_parser -from python.utils.config_parser import CPP_KEYWORDS -from python.utils.config_parser import ModelKeys +from py_proto import mace_pb2 +from utils import device +from utils import util +from utils.util import mace_check +from utils.util import MaceLogger +from utils import config_parser +from utils.config_parser import CPP_KEYWORDS +from utils.config_parser import ModelKeys GENERATED_NAME = set() diff --git a/tools/python/gen_opencl.py b/tools/python/gen_opencl.py index 5f9186ed6779604eb6c8c3f46aca8208529c7e2f..ff82e5289ad7c663686c0bd441e7ed04be60e284 100644 --- a/tools/python/gen_opencl.py +++ b/tools/python/gen_opencl.py @@ -22,9 +22,9 @@ import os import struct import numpy as np -from python.utils import util -from python.utils.util import MaceLogger -from python.utils.util import mace_check +from utils import util +from utils.util import MaceLogger +from utils.util import mace_check def generate_opencl_code(binary_file_name, load_func_name, size_func_name, diff --git a/tools/python/py_proto/__init__.py b/tools/python/py_proto/__init__.py index a49806917cf757ea4197caa0cae07bff99527676..da5f48fd89e22d2dda0494b83a7cb4db378f79aa 100644 --- a/tools/python/py_proto/__init__.py +++ b/tools/python/py_proto/__init__.py @@ -17,8 +17,8 @@ from __future__ import division from __future__ import print_function import os -from python.utils import device -from python.utils.util import MaceLogger +from utils import device +from utils.util import MaceLogger cwd = os.path.dirname(__file__) diff --git a/tools/python/quantize/quantize_util.py b/tools/python/quantize/quantize_util.py index 9a5b75bb02d877e9d96f5214278b17c876b2653e..bb80e0dc41ddecb6f424cc3e55d112397d67c7c6 100644 --- a/tools/python/quantize/quantize_util.py +++ b/tools/python/quantize/quantize_util.py @@ -19,7 +19,7 @@ from __future__ import print_function import numpy as np import math -from python.transform.base_converter import DeviceType +from transform.base_converter import DeviceType class QuantizedData(object): diff --git a/tools/python/quantize/quantize_util_test.py b/tools/python/quantize/quantize_util_test.py index 8b283ff849c67c3c3198c296c1db016a8f08a5a7..d963db7298acf5bce67ee077dae8777c22c726ff 100644 --- a/tools/python/quantize/quantize_util_test.py +++ b/tools/python/quantize/quantize_util_test.py @@ -14,7 +14,7 @@ import unittest import numpy as np -import quantize_util +import quantize.quantize_util class TestQuantize(unittest.TestCase): diff --git a/tools/python/run_model.py b/tools/python/run_model.py index 10ea4f6a001be2697c8c3fdf42bd26ab61ad9ca5..52e081fae179f612cfff8e701a6f6fbfffe6ac3a 100644 --- a/tools/python/run_model.py +++ b/tools/python/run_model.py @@ -22,17 +22,17 @@ import tempfile import shutil import numpy as np -from python.py_proto import mace_pb2 -from python.utils import util -from python.utils import device -from python.utils import config_parser -from python.utils.config_parser import DeviceType -from python.utils.target import Target -from python.utils.config_parser import ModelKeys -from python.utils.util import MaceLogger -from python.utils.util import mace_check -from python import run_target -from python import validate +from py_proto import mace_pb2 +from utils import util +from utils import device +from utils import config_parser +from utils.config_parser import DeviceType +from utils.target import Target +from utils.config_parser import ModelKeys +from utils.util import MaceLogger +from utils.util import mace_check +import run_target +import validate """ Tool for mace_run: diff --git a/tools/python/run_target.py b/tools/python/run_target.py index 801340a936cecb7157d648751bde62584a457102..370b24238b59501509695aaba89063aa0a04b252 100644 --- a/tools/python/run_target.py +++ b/tools/python/run_target.py @@ -28,10 +28,10 @@ from __future__ import print_function import argparse import os -from python.utils import device -from python.utils import target -from python.utils import config_parser -from python.utils import util +from utils import device +from utils import target +from utils import config_parser +from utils import util def run_target(target_abi, install_dir, target_obj, device_ids="all"): diff --git a/tools/python/transform/apu_converter.py b/tools/python/transform/apu_converter.py index e36c144de5734ddebe897b73720e149a6ce44fce..12f302ec1752a53117f4855e1bc21e228452cdb1 100644 --- a/tools/python/transform/apu_converter.py +++ b/tools/python/transform/apu_converter.py @@ -12,24 +12,23 @@ # See the License for the specific language governing permissions and # limitations under the License. -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - +import copy import numpy as np from enum import Enum +from operator import mul -from python.py_proto import mace_pb2 -from python.transform import base_converter -from python.transform.base_converter import ConverterUtil -from python.transform.base_converter import EltwiseType -from python.transform.base_converter import MaceKeyword -from python.transform.base_converter import MaceOp -from python.transform.base_converter import PaddingMode -from python.transform.base_converter import PoolingType -from python.transform.base_converter import DataFormat -from python.transform.base_converter import FrameworkType -from python.utils.util import mace_check +from py_proto import mace_pb2 +from transform import base_converter +from transform.base_converter import ConverterUtil +from transform.base_converter import EltwiseType +from transform.base_converter import MaceKeyword +from transform.base_converter import MaceOp +from transform.base_converter import PaddingMode +from transform.base_converter import PoolingType +from transform.base_converter import ReduceType +from transform.base_converter import DataFormat +from transform.base_converter import FrameworkType +from utils.util import mace_check ApuSupportedOps = [ diff --git a/tools/python/transform/base_converter.py b/tools/python/transform/base_converter.py index fe93d0486f0496faf1e9b947bf43033fd4ff62bb..11a15b2a5ad0612cc8508f53bdb6ff5fa077cfb4 100644 --- a/tools/python/transform/base_converter.py +++ b/tools/python/transform/base_converter.py @@ -12,15 +12,13 @@ # See the License for the specific language governing permissions and # limitations under the License. -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function from enum import Enum -from python.py_proto import mace_pb2 -from python.utils.config_parser import DataFormat -from python.utils.config_parser import DeviceType +from py_proto import mace_pb2 + +from utils.config_parser import DataFormat +from utils.config_parser import DeviceType # SAME_LOWER: if the amount of paddings to be added is odd, diff --git a/tools/python/transform/caffe_converter.py b/tools/python/transform/caffe_converter.py index b937d411ca7856311301179a845c2edae0667244..fd75501b737d298186453919733e6852d2feb4f6 100644 --- a/tools/python/transform/caffe_converter.py +++ b/tools/python/transform/caffe_converter.py @@ -12,9 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function import math @@ -22,18 +19,20 @@ import numpy as np import six import google.protobuf.text_format -from python.py_proto import mace_pb2, caffe_pb2 -from python.utils.util import mace_check -from . import base_converter -from . import shape_inference -from .base_converter import PoolingType -from .base_converter import ActivationType -from .base_converter import EltwiseType -from .base_converter import FrameworkType -from .base_converter import DataFormat -from .base_converter import MaceOp -from .base_converter import MaceKeyword -from .base_converter import ConverterUtil +from py_proto import mace_pb2 +from transform import base_converter +from transform import shape_inference +from transform.base_converter import PoolingType +from transform.base_converter import ActivationType +from transform.base_converter import EltwiseType +from transform.base_converter import FrameworkType +from transform.base_converter import DataFormat +from transform.base_converter import MaceOp +from transform.base_converter import MaceKeyword +from transform.base_converter import ConverterUtil +from utils.util import mace_check + +from py_proto import caffe_pb2 caffe_group_str = 'group' caffe_kernel_h_str = 'kernel_h' diff --git a/tools/python/transform/hexagon_converter.py b/tools/python/transform/hexagon_converter.py index f9c6a7123fa26eb51fe1d672fbd862b237a1faa1..900c0ba1f3669d6c2a1bc4899362f963ddd2dae4 100644 --- a/tools/python/transform/hexagon_converter.py +++ b/tools/python/transform/hexagon_converter.py @@ -16,23 +16,24 @@ from __future__ import absolute_import from __future__ import division from __future__ import print_function + import copy import numpy as np from enum import Enum from operator import mul from functools import reduce -from python.py_proto import mace_pb2 -from python.utils.util import mace_check -from . import base_converter -from .base_converter import ConverterUtil -from .base_converter import DeviceType -from .base_converter import EltwiseType -from .base_converter import MaceKeyword -from .base_converter import MaceOp -from .base_converter import PaddingMode -from .base_converter import PoolingType -from .base_converter import ReduceType +from py_proto import mace_pb2 +from transform import base_converter +from transform.base_converter import ConverterUtil +from transform.base_converter import DeviceType +from transform.base_converter import EltwiseType +from transform.base_converter import MaceKeyword +from transform.base_converter import MaceOp +from transform.base_converter import PaddingMode +from transform.base_converter import PoolingType +from transform.base_converter import ReduceType +from utils.util import mace_check HexagonSupportedOps = [ diff --git a/tools/python/transform/onnx_converter.py b/tools/python/transform/onnx_converter.py index e682b3dd5e1e51814846c07a6c8638f1d88dafe4..c7d11ab72b2a5280a14c28bca9c0bce7c8cb8b1c 100644 --- a/tools/python/transform/onnx_converter.py +++ b/tools/python/transform/onnx_converter.py @@ -12,34 +12,32 @@ # See the License for the specific language governing permissions and # limitations under the License. -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function import sys from enum import Enum import six -import numpy as np -from numbers import Number -from python.py_proto import mace_pb2 -from . import base_converter -from .base_converter import PoolingType -from .base_converter import PaddingMode -from .base_converter import ActivationType -from .base_converter import EltwiseType -from .base_converter import ReduceType -from .base_converter import FrameworkType -from .base_converter import RoundMode -from .base_converter import DataFormat -from .base_converter import MaceOp -from .base_converter import MaceKeyword -from .base_converter import ConverterUtil -from python.utils.util import mace_check +from py_proto import mace_pb2 +from transform import base_converter +from transform.base_converter import PoolingType +from transform.base_converter import PaddingMode +from transform.base_converter import ActivationType +from transform.base_converter import EltwiseType +from transform.base_converter import ReduceType +from transform.base_converter import FrameworkType +from transform.base_converter import RoundMode +from transform.base_converter import DataFormat +from transform.base_converter import MaceOp +from transform.base_converter import MaceKeyword +from transform.base_converter import ConverterUtil +from utils.util import mace_check + +import numpy as np import onnx import onnx.utils from onnx import mapping, numpy_helper, TensorProto +from numbers import Number IS_PYTHON3 = sys.version_info > (3,) @@ -193,9 +191,9 @@ OnnxOpType = Enum('OnnxOpType', onnx_attr_translator = { "axis": lambda x: int(x), "axes": lambda x: [int(a) for a in x], - "dtype": lambda x: onnx_dtype(x), + "dtype": lambda x: data_type.onnx2tf(x), "keepdims": lambda x: bool(x), - "to": lambda x: onnx_dtype(x), + "to": lambda x: data_type.onnx2tf(x), } @@ -569,7 +567,11 @@ class OnnxConverter(base_converter.ConverterInterface): tensor.data_type = mace_pb2.DT_FLOAT tensor.float_data.extend( onnx_tensor.astype(np.float32).flat) - elif data_type == np.int32 or data_type == np.int64: + elif data_type == np.int32: + tensor.data_type = mace_pb2.DT_INT32 + tensor.int32_data.extend( + onnx_tensor.astype(np.int32).flat) + elif data_type == np.int64: tensor.data_type = mace_pb2.DT_INT32 tensor.int32_data.extend( onnx_tensor.astype(np.int32).flat) @@ -666,9 +668,9 @@ class OnnxConverter(base_converter.ConverterInterface): if 'to' in node.attrs: dtype = node.attrs['to'] - if dtype == np.float32 or dtype == np.float64: + if dtype == TensorProto.FLOAT: op.output_type.extend([self._option.data_type]) - elif dtype == np.int64 or dtype == np.int32: + elif dtype == TensorProto.INT: op.output_type.extend([mace_pb2.DT_INT32]) else: mace_check(False, "data type %s not supported" % dtype) @@ -957,10 +959,7 @@ class OnnxConverter(base_converter.ConverterInterface): if len(const_tensor.dims) == 0: value_arg = op.arg.add() value_arg.name = MaceKeyword.mace_scalar_input_str - if const_tensor.data_type == mace_pb2.DT_INT32: - value_arg.f = float(const_tensor.int32_data[0]) - elif const_tensor.data_type == mace_pb2.DT_FLOAT: - value_arg.f = const_tensor.float_data[0] + value_arg.f = const_tensor.float_data[0] value_index_arg = op.arg.add() value_index_arg.name = \ MaceKeyword.mace_scalar_input_index_str @@ -973,10 +972,7 @@ class OnnxConverter(base_converter.ConverterInterface): if len(const_tensor.dims) == 0: value_arg = op.arg.add() value_arg.name = MaceKeyword.mace_scalar_input_str - if const_tensor.data_type == mace_pb2.DT_INT32: - value_arg.f = float(const_tensor.int32_data[0]) - elif const_tensor.data_type == mace_pb2.DT_FLOAT: - value_arg.f = const_tensor.float_data[0] + value_arg.f = const_tensor.float_data[0] value_index_arg = op.arg.add() value_index_arg.name = \ MaceKeyword.mace_scalar_input_index_str diff --git a/tools/python/transform/shape_inference.py b/tools/python/transform/shape_inference.py index 61db3af3d907a1f4e9bb77bff0715c7bc6e2faf2..e035944d3231094f3dac5707dc775325da02e6be 100644 --- a/tools/python/transform/shape_inference.py +++ b/tools/python/transform/shape_inference.py @@ -12,20 +12,18 @@ # See the License for the specific language governing permissions and # limitations under the License. -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function import math + import numpy as np import six -from .transformer import Transformer -from .base_converter import DataFormat -from .base_converter import MaceOp -from .base_converter import MaceKeyword -from .base_converter import ConverterUtil -from python.utils.util import mace_check +from transform.transformer import Transformer +from transform.base_converter import DataFormat +from transform.base_converter import MaceOp +from transform.base_converter import MaceKeyword +from transform.base_converter import ConverterUtil +from utils.util import mace_check class ShapeInference(object): @@ -255,7 +253,7 @@ class ShapeInference(object): aspect_ratio = ConverterUtil.get_arg(op, MaceKeyword.mace_aspect_ratio_str).floats # noqa num_prior = len(aspect_ratio) * len(min_size) + len(max_size) - output_shape[2] = int(num_prior * input_h * input_w * 4) + output_shape[2] = num_prior * input_h * input_w * 4 self.add_output_shape(op, [output_shape]) def infer_shape_reshape(self, op): @@ -277,7 +275,7 @@ class ShapeInference(object): output_shape[i] = dim[i] product *= dim[i] if idx != -1: - output_shape[idx] = int(input_size / product) + output_shape[idx] = input_size / product self.add_output_shape(op, [output_shape]) else: output_shape = [] diff --git a/tools/python/transform/tensorflow_converter.py b/tools/python/transform/tensorflow_converter.py index 69bf05384dfa9b2b3c06909810824a104c32f091..48b475bbf9f1abd35f25b4f9fa5e44e001cec5e3 100644 --- a/tools/python/transform/tensorflow_converter.py +++ b/tools/python/transform/tensorflow_converter.py @@ -12,30 +12,27 @@ # See the License for the specific language governing permissions and # limitations under the License. -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - +import os import math import numpy as np import six import tensorflow as tf from enum import Enum -from python.py_proto import mace_pb2 -from . import base_converter -from .base_converter import PoolingType -from .base_converter import PaddingMode -from .base_converter import ActivationType -from .base_converter import EltwiseType -from .base_converter import PadType -from .base_converter import FrameworkType -from .base_converter import ReduceType -from .base_converter import DataFormat -from .base_converter import MaceOp -from .base_converter import MaceKeyword -from .base_converter import ConverterUtil -from python.utils.util import mace_check +from py_proto import mace_pb2 +from transform import base_converter +from transform.base_converter import PoolingType +from transform.base_converter import PaddingMode +from transform.base_converter import ActivationType +from transform.base_converter import EltwiseType +from transform.base_converter import PadType +from transform.base_converter import FrameworkType +from transform.base_converter import ReduceType +from transform.base_converter import DataFormat +from transform.base_converter import MaceOp +from transform.base_converter import MaceKeyword +from transform.base_converter import ConverterUtil +from utils.util import mace_check from tensorflow.core.framework import tensor_shape_pb2 from tensorflow.tools.graph_transforms import TransformGraph diff --git a/tools/python/transform/transformer.py b/tools/python/transform/transformer.py index 76d59ce989f67ad84e02f7d362120f0119759cae..5344e8d5f73217465196526054b676d193940548 100644 --- a/tools/python/transform/transformer.py +++ b/tools/python/transform/transformer.py @@ -12,31 +12,28 @@ # See the License for the specific language governing permissions and # limitations under the License. -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function import re import numpy as np import six -from python.py_proto import mace_pb2 -from . import base_converter -from .base_converter import ConverterUtil -from .base_converter import DataFormat -from .base_converter import DeviceType -from .base_converter import EltwiseType -from .base_converter import FrameworkType -from .base_converter import MaceKeyword -from .base_converter import MaceOp -from .base_converter import MaceFixedDataFormatOps # noqa -from .base_converter import MaceTransposableDataFormatOps # noqa -from .base_converter import PaddingMode -from .base_converter import ReduceType -from .base_converter import TransformerRule -from python.quantize import quantize_util -from python.utils.util import mace_check +from py_proto import mace_pb2 +from transform import base_converter +from transform.base_converter import ConverterUtil +from transform.base_converter import DataFormat +from transform.base_converter import DeviceType +from transform.base_converter import EltwiseType +from transform.base_converter import FrameworkType +from transform.base_converter import MaceKeyword +from transform.base_converter import MaceOp +from transform.base_converter import MaceFixedDataFormatOps # noqa +from transform.base_converter import MaceTransposableDataFormatOps # noqa +from transform.base_converter import PaddingMode +from transform.base_converter import ReduceType +from transform.base_converter import TransformerRule +from quantize import quantize_util +from utils.util import mace_check class Transformer(base_converter.ConverterInterface): @@ -1443,15 +1440,15 @@ class Transformer(base_converter.ConverterInterface): arg.i = 1 elif arg.i == 3: arg.i = 2 - if op.input[0] in self._producer: - producer = self._producer[op.input[0]] - input_shape = producer.output_shape[0].dims - if producer.type == MaceOp.FullyConnected.name and\ - len(input_shape) == 2: - axis_arg = ConverterUtil.get_arg( - op, MaceKeyword.mace_axis_str) - if axis_arg.i == 1: - axis_arg.i = 3 + + producer = self._producer[op.input[0]] + input_shape = producer.output_shape[0].dims + if producer.type == MaceOp.FullyConnected.name and \ + len(input_shape) == 2: + axis_arg = ConverterUtil.get_arg( + op, MaceKeyword.mace_axis_str) + if axis_arg.i == 1: + axis_arg.i = 3 elif op.type == MaceOp.Squeeze.name: for arg in op.arg: diff --git a/tools/python/utils/config_parser.py b/tools/python/utils/config_parser.py index 88497746c114b617caf809a2c71f04fdad7527e2..35de4bd9164313b3c72a2b39e2c132aa9b5ef40b 100644 --- a/tools/python/utils/config_parser.py +++ b/tools/python/utils/config_parser.py @@ -22,9 +22,9 @@ import copy import yaml from enum import Enum -from python.utils.util import mace_check -from python.utils.util import MaceLogger -from python.py_proto import mace_pb2 +from utils.util import mace_check +from utils.util import MaceLogger +from py_proto import mace_pb2 CPP_KEYWORDS = [ 'alignas', 'alignof', 'and', 'and_eq', 'asm', 'atomic_cancel', diff --git a/tools/python/utils/device.py b/tools/python/utils/device.py index 1813c0ca319371989ec891528be2e48a4aa2b2aa..579d70ff284e28cb9ba689cceb399504c07973e1 100644 --- a/tools/python/utils/device.py +++ b/tools/python/utils/device.py @@ -23,7 +23,7 @@ import subprocess import random import tempfile -from python.utils import util +from utils import util def execute(cmd, verbose=True): diff --git a/tools/python/utils/target.py b/tools/python/utils/target.py index aa37ba6afa7fd7d181aec5cee5aef0dcd467d78e..11c972df1b10756306687bfe825145be436501e2 100644 --- a/tools/python/utils/target.py +++ b/tools/python/utils/target.py @@ -12,6 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +from __future__ import absolute_import +from __future__ import division from __future__ import print_function diff --git a/tools/python/validate.py b/tools/python/validate.py index b3d7800822b3c79c8143349111abcddc21ad2b77..7004d2a8c230f1f8ef96c8f88e48064025d562f8 100644 --- a/tools/python/validate.py +++ b/tools/python/validate.py @@ -12,19 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - import os import os.path import numpy as np import six -from python.py_proto import mace_pb2 -from python.utils import util -from python.utils.config_parser import DataFormat -from python.utils.config_parser import Platform +from py_proto import mace_pb2 +from utils import util +from utils.config_parser import DataFormat +from utils.config_parser import Platform VALIDATION_MODULE = 'VALIDATION' diff --git a/tools/sh_commands.py b/tools/sh_commands.py index 85a11f05d43f798ebc21396e8f1a4649f7aef279..4b02948549faad746e6ef5e6c01ad9d4ae60de6a 100644 --- a/tools/sh_commands.py +++ b/tools/sh_commands.py @@ -21,6 +21,7 @@ import re import sh import struct import sys +import time import platform import six diff --git a/tools/validate.py b/tools/validate.py index 0f51c881a458ed8837530d23e05c7d4894afb16d..9980a0a92c74a19744f9e0fa4d55722c1ff3849c 100644 --- a/tools/validate.py +++ b/tools/validate.py @@ -13,9 +13,11 @@ # limitations under the License. import argparse +import sys import os import os.path import numpy as np +import re import six import common