aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/layers/StridedSliceLayer.cpp
diff options
context:
space:
mode:
authorDavid Monahan <david.monahan@arm.com>2020-03-13 07:52:54 +0000
committerJim Flynn <jim.flynn@arm.com>2020-03-13 19:09:07 +0000
commit0a99a1469f6ca683df65937ae3ad217b732d01c5 (patch)
tree292b719fb0acec07e4e7c7796c744063701da432 /src/armnn/layers/StridedSliceLayer.cpp
parentde36e4a9c299028e792c3a5bd99ad0816d806077 (diff)
downloadarmnn-0a99a1469f6ca683df65937ae3ad217b732d01c5.tar.gz
IVGCVSW-4531 Fix for failing strided slice NNT/VTS tests on Android R
Signed-off-by: David Monahan <david.monahan@arm.com> Change-Id: I7f6932f0d21b5678ab9822b0fc69f589bbbb07e5
Diffstat (limited to 'src/armnn/layers/StridedSliceLayer.cpp')
-rw-r--r--src/armnn/layers/StridedSliceLayer.cpp14
1 files changed, 10 insertions, 4 deletions
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<TensorShape> 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;