From 4a3c61091037e7e86e8b03bb060d8c1ab82731a9 Mon Sep 17 00:00:00 2001 From: josh minor Date: Mon, 6 Jan 2020 16:40:46 -0600 Subject: IVGCVSW-4259 Add frontend and reference workload for UnaryOperationLayer * Added new layer named ElementwiseUnary * Deprecated existing Abs/Rsqrt layer functions * Updated existing Abs/Rsqrt test infrastructure to use new layer * Added boilerplate for new Exp,Neg,Sqrt elemwise op layers * AbsQuantize test removed pending future commit * Serialization support added !android-nn-driver:2550 Change-Id: Ic595c645925e17b45db568187fd05646daf2e87f Signed-off-by: josh minor --- src/armnn/QuantizerVisitor.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'src/armnn/QuantizerVisitor.cpp') diff --git a/src/armnn/QuantizerVisitor.cpp b/src/armnn/QuantizerVisitor.cpp index 4b80b02e34..51818ebddd 100644 --- a/src/armnn/QuantizerVisitor.cpp +++ b/src/armnn/QuantizerVisitor.cpp @@ -115,9 +115,7 @@ void QuantizerVisitor::RecordLayer(const IConnectableLayer* srcLayer, IConnectab void QuantizerVisitor::VisitAbsLayer(const IConnectableLayer* layer, const char* name) { - IConnectableLayer* newLayer = m_QuantizedNetwork->AddAbsLayer(name); - RecordLayer(layer, newLayer); - SetQuantizedInputConnections(layer, newLayer); + VisitElementwiseUnaryLayer(layer, ElementwiseUnaryDescriptor(UnaryOperation::Abs), name); } void QuantizerVisitor::VisitActivationLayer(const IConnectableLayer* layer, @@ -275,6 +273,15 @@ void QuantizerVisitor::VisitDepthwiseConvolution2dLayer(const IConnectableLayer* SetQuantizedInputConnections(layer, newLayer); } +void QuantizerVisitor::VisitElementwiseUnaryLayer(const IConnectableLayer* layer, + const ElementwiseUnaryDescriptor& elementwiseUnaryDescriptor, + const char* name) +{ + IConnectableLayer* newLayer = m_QuantizedNetwork->AddElementwiseUnaryLayer(elementwiseUnaryDescriptor, name); + RecordLayer(layer, newLayer); + SetQuantizedInputConnections(layer, newLayer); +} + void QuantizerVisitor::VisitFullyConnectedLayer(const IConnectableLayer *layer, const FullyConnectedDescriptor& desc, const ConstTensor& weights, @@ -450,12 +457,9 @@ void QuantizerVisitor::VisitResizeLayer(const IConnectableLayer* layer, SetQuantizedInputConnections(layer, newLayer); } -void QuantizerVisitor::VisitRsqrtLayer(const IConnectableLayer* layer, - const char* name) +void QuantizerVisitor::VisitRsqrtLayer(const IConnectableLayer* layer, const char* name) { - IConnectableLayer* newLayer = m_QuantizedNetwork->AddRsqrtLayer(name); - RecordLayer(layer, newLayer); - SetQuantizedInputConnections(layer, newLayer); + VisitElementwiseUnaryLayer(layer, ElementwiseUnaryDescriptor(UnaryOperation::Rsqrt), name); } void QuantizerVisitor::VisitSliceLayer(const IConnectableLayer* layer, -- cgit v1.2.1