diff options
author | Louis Verhaard <louis.verhaard@arm.com> | 2020-05-25 15:05:26 +0200 |
---|---|---|
committer | Tim Hall <tim.hall@arm.com> | 2020-06-18 17:53:52 +0100 |
commit | 7db78969dc8ead72f3ded81b6d2a6a7ed798ea62 (patch) | |
tree | 011bcf579cc8e0f007f9564a98cc5c05df34322b /ethosu/vela/graph_optimiser.py | |
parent | 78792223369fa34dacd0e69e189af035283da2ae (diff) | |
download | ethos-u-vela-7db78969dc8ead72f3ded81b6d2a6a7ed798ea62.tar.gz |
MLBEDSW-2067: added custom exceptions
Added custom exceptions to handle different types of input errors.
Also performed minor formatting changes using flake8/black.
Change-Id: Ie5b05361507d5e569aff045757aec0a4a755ae98
Signed-off-by: Louis Verhaard <louis.verhaard@arm.com>
Diffstat (limited to 'ethosu/vela/graph_optimiser.py')
-rw-r--r-- | ethosu/vela/graph_optimiser.py | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/ethosu/vela/graph_optimiser.py b/ethosu/vela/graph_optimiser.py index 351716e0..72bb486c 100644 --- a/ethosu/vela/graph_optimiser.py +++ b/ethosu/vela/graph_optimiser.py @@ -22,6 +22,7 @@ import numpy as np from . import rewrite_graph from .data_type import DataType +from .errors import UnsupportedFeatureError from .operation import NpuBlockType from .operation import Operation from .tensor import Tensor @@ -124,7 +125,7 @@ def calc_padding_and_skirt(padding_type, kernel_size, stride, input_dims): top_pad = 0 bottom_pad = 0 else: - assert 0, "Unknown padding" + raise UnsupportedFeatureError("Unknown padding {}".format(str(padding_type))) padding = (top_pad, left_pad, bottom_pad, right_pad) skirt = (top_pad, left_pad, ypad - top_pad, xpad - left_pad) return padding, skirt @@ -214,7 +215,7 @@ def fixup_unpack_output(tens, arch): if op.type == "StridedSlice": new_axis_mask = op.attrs["new_axis_mask"] shrink_axis_mask = op.attrs["shrink_axis_mask"] - ellipsis_mask = op.attrs["ellipsis_mask"] + ellipsis_mask = op.attrs["ellipsis_mask"] if (new_axis_mask != 0 and shrink_axis_mask != 0) or ellipsis_mask != 0: # Not supported, will be put on CPU @@ -243,7 +244,7 @@ def fixup_unpack_output(tens, arch): n += 1 new_axis_mask &= new_axis_mask - 1 axis = int(math.log2(prev_mask - new_axis_mask)) - reshape_input_shape = reshape_input_shape[:axis] + reshape_input_shape[(axis + 1):] + reshape_input_shape = reshape_input_shape[:axis] + reshape_input_shape[(axis + 1) :] new_axis_mask >>= 1 assert len(tens.shape) == (len(op.inputs[0].shape) + n) @@ -288,7 +289,7 @@ def add_padding_fields(op, arch): kernel_size = op.attrs["ksizes"][1:3] input_shape = op.inputs[0].shape else: - assert 0, "Unknown operation that uses padding" + raise UnsupportedFeatureError("Unknown operation that uses padding: {}".format(op.type)) padding, skirt = calc_padding_and_skirt(op.attrs["padding"], kernel_size, op.attrs["strides"], input_shape) op.attrs["explicit_padding"] = padding @@ -312,7 +313,9 @@ fc_op = set( ) ) depthwise_op = set(("DepthwiseConv2dNative", "DepthwiseConv2dBiasAct",)) -pool_op = set(("AvgPool", "MaxPool", "QuantizedAvgPool", "QuantizedMaxPool", "AvgPoolAct", "MaxPoolAct", "ResizeBilinear",)) +pool_op = set( + ("AvgPool", "MaxPool", "QuantizedAvgPool", "QuantizedMaxPool", "AvgPoolAct", "MaxPoolAct", "ResizeBilinear",) +) elementwise_op = set(("AddAct", "MulAct", "SubAct", "Maximum", "Minimum", "LeakyRelu", "Abs")) binary_elementwise_op = set(("AddAct", "MulAct", "SubAct", "Maximum", "Minimum")) activation_ops = set(("Relu", "Relu6", "ReluN1To1", "Sigmoid", "Tanh")) @@ -373,13 +376,11 @@ def convert_depthwise_to_conv(op, arch): weight_tensor.quant_values.shape ) else: - print( - "Error: Unsupported DepthwiseConv2d with depth_multiplier = {0}, " - "ifm channels = {1}, ofm channels = {2}".format( + raise UnsupportedFeatureError( + "Unsupported DepthwiseConv2d with depth_multiplier = {}, ifm channels = {}, ofm channels = {}".format( op.attrs["depth_multiplier"], ifm_tensor.shape[3], ofm_tensor.shape[3] ) ) - assert False return op |