From 0a99a1469f6ca683df65937ae3ad217b732d01c5 Mon Sep 17 00:00:00 2001 From: David Monahan Date: Fri, 13 Mar 2020 07:52:54 +0000 Subject: IVGCVSW-4531 Fix for failing strided slice NNT/VTS tests on Android R Signed-off-by: David Monahan Change-Id: I7f6932f0d21b5678ab9822b0fc69f589bbbb07e5 --- src/armnn/layers/StridedSliceLayer.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/armnn') diff --git a/src/armnn/layers/StridedSliceLayer.cpp b/src/armnn/layers/StridedSliceLayer.cpp index b9c337188c..dd4f942086 100644 --- a/src/armnn/layers/StridedSliceLayer.cpp +++ b/src/armnn/layers/StridedSliceLayer.cpp @@ -52,15 +52,21 @@ std::vector StridedSliceLayer::InferOutputShapes( for (unsigned int i = 0; i < inputShape.GetNumDimensions(); i++) { + int stride = m_Param.m_Stride[i]; + int start = m_Param.GetStartForAxis(inputShape, i); + int stop = m_Param.GetStopForAxis(inputShape, i, start); + if (m_Param.m_ShrinkAxisMask & (1 << i)) { + // Don't take a slice from an axis being shrunk + if (m_Param.m_End[i] >= 2) + { + throw LayerValidationException( + "StridedSlice: Attempting to take slice from an axis being shrunk"); + } continue; } - int stride = m_Param.m_Stride[i]; - int start = m_Param.GetStartForAxis(inputShape, i); - int stop = m_Param.GetStopForAxis(inputShape, i, start); - int newSize = stride > 0 ? ((stop - start) + stride - 1) / stride : ((start - stop) - stride - 1) / -stride; -- cgit v1.2.1