IVGCVSW-3058 Segmentation fault running Resnetv2.50 tfite int8 model
* The execution crashed because the weights of a convolution were
null during the network execution
* Copied the weights and bias when folding a pad layer into a
convolution
Change-Id: I3ae72143d04cac90d4f878cdf3b1a08b2f2a5c90
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
diff --git a/src/armnn/optimizations/FoldPadIntoConvolution2d.hpp b/src/armnn/optimizations/FoldPadIntoConvolution2d.hpp
index f789ffa..b2a2ba4 100644
--- a/src/armnn/optimizations/FoldPadIntoConvolution2d.hpp
+++ b/src/armnn/optimizations/FoldPadIntoConvolution2d.hpp
@@ -59,6 +59,17 @@
name.c_str());
newConv2dLayer.GetOutputHandler().SetTensorInfo(outInfo);
+ // Copy weights and bias to the new convolution layer
+ BOOST_ASSERT_MSG(convolution2dLayer->m_Weight != nullptr,
+ "FoldPadIntoConvolution2d: Weights data should not be null.");
+ newConv2dLayer.m_Weight = std::move(convolution2dLayer->m_Weight);
+ if (descriptor.m_BiasEnabled)
+ {
+ BOOST_ASSERT_MSG(convolution2dLayer->m_Bias != nullptr,
+ "FoldPadIntoConvolution2d: Bias data should not be null if bias is enabled.");
+ newConv2dLayer.m_Bias = std::move(convolution2dLayer->m_Bias);
+ }
+
// Reconnects with original parent.
newConv2dLayer.GetOutputSlot().MoveAllConnections(*parentOut);
// Parent is now the new convolution2d layer.