From 2077348da176dd5f264bb04a0b500c5901969d09 Mon Sep 17 00:00:00 2001 From: Tianle Cheng Date: Tue, 3 Oct 2023 12:01:11 +0100 Subject: IVGCVSW-7749 DTS: Fix reshape floating point exception * Updated Opaque Delegate, TfliteParser, OnnxParser, and Deserializer to handle the Zero In Shape edge case Signed-off-by: Tianle Cheng Change-Id: I4a0d1e72a66de1fa56de99af9b6730a84e0ff596 --- src/armnnDeserializer/Deserializer.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/armnnDeserializer/Deserializer.cpp') diff --git a/src/armnnDeserializer/Deserializer.cpp b/src/armnnDeserializer/Deserializer.cpp index 6e2c07bf37..f455b1af0a 100644 --- a/src/armnnDeserializer/Deserializer.cpp +++ b/src/armnnDeserializer/Deserializer.cpp @@ -2632,7 +2632,23 @@ armnn::TensorInfo IDeserializer::DeserializerImpl::OutputShapeOfReshape(const ar std::accumulate(targetDimsIn.begin(), targetDimsIn.end(), -1, std::multiplies())); auto stretchIndex = static_cast(std::distance(targetDimsIn.begin(), stretchDim)); - outputDims[stretchIndex] = inputTensorInfo.GetNumElements() / targetNumElements; + if (targetNumElements == 0) + { + if (inputTensorInfo.GetNumElements() == 0) + { + outputDims[stretchIndex] = 0; + } + else + { + throw ParseException( + fmt::format("Input to reshape is a tensor with elements, but the requested shape has 0. {}", + CHECK_LOCATION().AsString())); + } + } + else + { + outputDims[stretchIndex] = inputTensorInfo.GetNumElements() / targetNumElements; + } } TensorShape outputShape = TensorShape(static_cast(outputDims.size()), outputDims.data()); -- cgit v1.2.1