From 7ee5d2c3b3cee5a924ed6347fef613ee07b5aca7 Mon Sep 17 00:00:00 2001 From: Finn Williams Date: Fri, 27 Mar 2020 11:11:50 +0000 Subject: IVGCVSW-3753 Add Clip support to the onnx parser Change-Id: I68c842c5906f03b8f5a6131537fea3a1a0db980a Signed-off-by: Finn Williams --- src/armnnOnnxParser/OnnxParser.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/armnnOnnxParser/OnnxParser.cpp') diff --git a/src/armnnOnnxParser/OnnxParser.cpp b/src/armnnOnnxParser/OnnxParser.cpp index 0c1af03af4..e4259980ca 100644 --- a/src/armnnOnnxParser/OnnxParser.cpp +++ b/src/armnnOnnxParser/OnnxParser.cpp @@ -5,7 +5,6 @@ #include "OnnxParser.hpp" #include -#include #include #include @@ -352,6 +351,7 @@ const std::map OnnxParser::m_ { "BatchNormalization", &OnnxParser::ParseBatchNormalization}, { "GlobalAveragePool", &OnnxParser::ParseGlobalAveragePool}, { "AveragePool", &OnnxParser::ParseAveragePool }, + { "Clip", &OnnxParser::ParseClip }, { "Constant", &OnnxParser::ParseConstant }, { "MaxPool", &OnnxParser::ParseMaxPool }, { "Reshape", &OnnxParser::ParseReshape }, @@ -1106,7 +1106,7 @@ void OnnxParser::ParseReshape(const onnx::NodeProto& node) void OnnxParser::ParseActivation(const onnx::NodeProto& node, const armnn::ActivationFunction func) { - CHECK_VALID_SIZE(static_cast(node.input_size()), 1); + CHECK_VALID_SIZE(static_cast(node.input_size()), 1, 3); CHECK_VALID_SIZE(static_cast(node.output_size()), 1); VALID_INPUTS(node, STR_LIST(onnx::TensorProto::FLOAT)); @@ -1114,6 +1114,12 @@ void OnnxParser::ParseActivation(const onnx::NodeProto& node, const armnn::Activ ActivationDescriptor desc; desc.m_Function = func; + if (func == ActivationFunction::BoundedReLu) + { + desc.m_A = node.input(2).empty() ? std::numeric_limits::max() : std::stof(node.input(2)); + desc.m_B = node.input(1).empty() ? std::numeric_limits::lowest() : std::stof(node.input(1)); + } + IConnectableLayer* const layer = m_Network->AddActivationLayer(desc, node.name().c_str()); BOOST_ASSERT(layer != nullptr); @@ -1128,6 +1134,11 @@ void OnnxParser::ParseActivation(const onnx::NodeProto& node, const armnn::Activ RegisterOutputSlots(layer, {node.output(0)}); } +void OnnxParser::ParseClip(const onnx::NodeProto& node) +{ + ParseActivation(node, ActivationFunction::BoundedReLu); +} + void OnnxParser::ParseSigmoid(const onnx::NodeProto& node) { ParseActivation(node, ActivationFunction::Sigmoid); -- cgit v1.2.1