From: Павел Ильютченко/AI Tools Lab /SRR/Engineer/삼성전자 Date: Tue, 20 Aug 2019 14:30:24 +0000 (+0300) Subject: [mir_onnx] Support versioning in Add operation (#6653) X-Git-Tag: accepted/tizen/unified/20190903.052428~275 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2628d364589564eea9cd39e292df8ab276a5947d;p=platform%2Fcore%2Fml%2Fnnfw.git [mir_onnx] Support versioning in Add operation (#6653) * Implemented converter versioning for Add operation, known versions: 1, 6, 7 Signed-off-by: Pavel Iliutchenko --- diff --git a/compiler/mir-onnx-importer/Op/Add.cpp b/compiler/mir-onnx-importer/Op/Add.cpp index eef2d9b..a9542de 100644 --- a/compiler/mir-onnx-importer/Op/Add.cpp +++ b/compiler/mir-onnx-importer/Op/Add.cpp @@ -25,6 +25,35 @@ namespace mir_onnx void AddNodeConverter::convert(const onnx::NodeProto &onnx_node, ConverterContext *context) const { + const auto opset_version = context->getOpsetVersion(onnx_node.domain()); + if (opset_version >= 7) + convertV7(onnx_node, context); + else if (opset_version >= 6) + convertV6(onnx_node, context); + else if (opset_version >= 1) + convertV1(onnx_node, context); + else + throw std::runtime_error("Not supported opset version on Add operation!"); +} + +void AddNodeConverter::convertV1(const onnx::NodeProto &onnx_node, ConverterContext *context) const +{ + // consumed_inputs attribute not used + convertV6(onnx_node, context); +} + +void AddNodeConverter::convertV6(const onnx::NodeProto &onnx_node, ConverterContext *context) const +{ + // broadcast attribute not used + const auto *axis = findAttribute(onnx_node, "axis"); + if (axis != nullptr) + throw std::runtime_error("Not supported axis attribute in Add operation!"); + + convertV7(onnx_node, context); +} + +void AddNodeConverter::convertV7(const onnx::NodeProto &onnx_node, ConverterContext *context) const +{ std::vector inputs = context->getNodeInputs(onnx_node); mir::Graph *graph = context->getGraph(); diff --git a/compiler/mir-onnx-importer/Op/Add.h b/compiler/mir-onnx-importer/Op/Add.h index 49217e2..0edc028 100644 --- a/compiler/mir-onnx-importer/Op/Add.h +++ b/compiler/mir-onnx-importer/Op/Add.h @@ -23,6 +23,11 @@ class AddNodeConverter : public NodeConverter { public: void convert(const onnx::NodeProto &onnx_node, ConverterContext *context) const override; + +private: + void convertV1(const onnx::NodeProto &onnx_node, ConverterContext *context) const; + void convertV6(const onnx::NodeProto &onnx_node, ConverterContext *context) const; + void convertV7(const onnx::NodeProto &onnx_node, ConverterContext *context) const; }; } // namespace mir_onnx