From 05bfbd34ec06c2dc3b0c89f0ede5de587cdbb3a2 Mon Sep 17 00:00:00 2001 From: Mike Kelly Date: Thu, 11 Jul 2019 11:46:21 +0100 Subject: IVGCVSW-3454 Fix VTS dilated conv2d test failures * Updated InferOutputShapes to take dilation into account Signed-off-by: Mike Kelly Change-Id: I84e999dc037fa47ce5290e9baa0df94bc9e7ce4d --- src/armnn/layers/Convolution2dLayer.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/armnn/layers/Convolution2dLayer.cpp b/src/armnn/layers/Convolution2dLayer.cpp index 243bcc3dfd..2c7a570790 100644 --- a/src/armnn/layers/Convolution2dLayer.cpp +++ b/src/armnn/layers/Convolution2dLayer.cpp @@ -69,11 +69,13 @@ std::vector Convolution2dLayer::InferOutputShapes(const std::vector unsigned int inBatchSize = inputShape[0]; unsigned int filterWidth = filterShape[dataLayoutIndex.GetWidthIndex()]; - unsigned int readWidth = (inWidth + m_Param.m_PadLeft + m_Param.m_PadRight) - (filterWidth); - unsigned int outWidth = 1 + (readWidth / m_Param.m_StrideX); + unsigned int dilatedFilterWidth = filterWidth + (m_Param.m_DilationX - 1) * (filterWidth - 1); + unsigned int readWidth = (inWidth + m_Param.m_PadLeft + m_Param.m_PadRight) - dilatedFilterWidth; + unsigned int outWidth = 1 + (readWidth / m_Param.m_StrideX); unsigned int filterHeight = filterShape[dataLayoutIndex.GetHeightIndex()]; - unsigned int readHeight = (inHeight + m_Param.m_PadTop + m_Param.m_PadBottom) - (filterHeight); + unsigned int dilatedFilterHeight = filterHeight + (m_Param.m_DilationY - 1) * (filterHeight - 1); + unsigned int readHeight = (inHeight + m_Param.m_PadTop + m_Param.m_PadBottom) - dilatedFilterHeight; unsigned int outHeight = 1 + (readHeight / m_Param.m_StrideY); unsigned int outChannels = filterShape[0]; -- cgit v1.2.1