IVGCVSW-6382 Add Gather operator support to ONNX parser
* Add ParseGather to support Gather operator on ONNX
* Add Support of int64 converted to int32 for constant
* Add OnnxParserTestUtils
* Refactor ValidateTensorShapesFromInputs of GatherLayer
* Unit tests
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: Ie9dff640240e14a062fef38f7faf0ccc212de5f7
diff --git a/src/armnnOnnxParser/OnnxParser.hpp b/src/armnnOnnxParser/OnnxParser.hpp
index 101e99f..b71b8dc 100644
--- a/src/armnnOnnxParser/OnnxParser.hpp
+++ b/src/armnnOnnxParser/OnnxParser.hpp
@@ -98,6 +98,7 @@
void AddPoolingLayer(const onnx::NodeProto& nodeProto, armnn::Pooling2dDescriptor& desc);
void CreateConstantLayer(const std::string& tensorName, const std::string& layerName);
+ void CreateInt64ConstantLayer(const std::string& tensorName, const std::string& layerName);
void CreateReshapeLayer(const std::string& inputName,
const std::string& outputName,
const std::string& layerName);
@@ -115,6 +116,7 @@
void ParseConstant(const onnx::NodeProto& nodeProto);
void ParseConv(const onnx::NodeProto& nodeProto);
void ParseFlatten(const onnx::NodeProto& node);
+ void ParseGather(const onnx::NodeProto& node);
void ParseGlobalAveragePool(const onnx::NodeProto& node);
void ParseMaxPool(const onnx::NodeProto& nodeProto);
void ParseShape(const onnx::NodeProto& node);
@@ -133,6 +135,10 @@
CreateConstTensor(const std::string name,
armnn::Optional<armnn::PermutationVector&> permutationVector = armnn::EmptyOptional());
+ std::pair<armnn::ConstTensor, std::unique_ptr<int32_t[]>>
+ CreateInt64ConstTensor(const std::string name,
+ armnn::Optional<armnn::PermutationVector&> permutationVector = armnn::EmptyOptional());
+
template <typename TypeList, typename Location>
void ValidateInputs(const onnx::NodeProto& node,
TypeList validInputs,