aboutsummaryrefslogtreecommitdiff
path: root/src/backends/neon/NeonBackend.cpp
diff options
context:
space:
mode:
authorCathal Corbett <cathal.corbett@arm.com>2022-05-13 09:55:59 +0100
committerCathal Corbett <cathal.corbett@arm.com>2022-05-13 15:09:18 +0000
commit4452baf3d295164877c5810a3867b1d2d79b04f3 (patch)
tree861b248dd0a603140eb384e48cd9ef97603a296b /src/backends/neon/NeonBackend.cpp
parentc46b90ef031a8041fe25a7191de799eca9eff8e5 (diff)
downloadarmnn-4452baf3d295164877c5810a3867b1d2d79b04f3.tar.gz
IVGCVSW-6260 ConstTensorsAsInput: Fully Connected Cl and Neon support.
* IVGCVSW-6940 ConstTensorsAsInput: DepthwiseConvolution2d - Complete Neon and Cl Bug Fix * Bug fix to enable Cl and Neon Backend Compatibility ConstantTensorsAsInputs * Updated Cl and Neon FullyConnected workloads to handle constant weights and bias as inputs rather than reading from member variables. * Prevent non const weights and biases passing CL and NEON validate for Depthwise Convolution. Signed-off-by: Cathal Corbett <cathal.corbett@arm.com> Change-Id: I0f505ff5998a183152f843d0f6cc74327ba920e7
Diffstat (limited to 'src/backends/neon/NeonBackend.cpp')
-rw-r--r--src/backends/neon/NeonBackend.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/backends/neon/NeonBackend.cpp b/src/backends/neon/NeonBackend.cpp
index 7a258c38e0..39ad4b9f32 100644
--- a/src/backends/neon/NeonBackend.cpp
+++ b/src/backends/neon/NeonBackend.cpp
@@ -250,17 +250,19 @@ OptimizationViews NeonBackend::OptimizeSubgraphView(const SubgraphView& subgraph
else if (base.GetType() == LayerType::FullyConnected)
{
FullyConnectedLayer* baseLayer = PolymorphicDowncast<FullyConnectedLayer*>(&base);
- Optional<TensorInfo> biases;
+ FullyConnectedDescriptor descriptor = baseLayer->GetParameters();
- if (baseLayer->GetParameters().m_BiasEnabled)
+ // As bias is optional only try to get TensorInfo from input if bias is enabled.
+ Optional<TensorInfo> biases;
+ if (descriptor.m_BiasEnabled)
{
- biases = baseLayer->m_Bias->GetTensorInfo();
+ biases = baseLayer->GetInputSlot(2).GetConnectedOutputSlot()->GetTensorInfo();
}
arm_compute::Status status = NeonFullyConnectedWorkloadValidate(
baseLayer->GetInputSlot(0).GetConnectedOutputSlot()->GetTensorInfo(),
activationLayer->GetInputSlot(0).GetConnectedOutputSlot()->GetTensorInfo(),
- baseLayer->m_Weight->GetTensorInfo(),
+ baseLayer->GetInputSlot(1).GetConnectedOutputSlot()->GetTensorInfo(),
biases,
baseLayer->GetParameters(),
&activationDesc);