diff options
author | Cathal Corbett <cathal.corbett@arm.com> | 2021-10-08 14:43:11 +0100 |
---|---|---|
committer | Colm Donelan <colm.donelan@arm.com> | 2021-10-14 15:03:43 +0000 |
commit | b8cc2b9257640a560fb3e9627a2654acf32dbf8d (patch) | |
tree | fdc449ea4b004be047c6480c727499ce1f6b705c /src/armnn/test | |
parent | 4ec6d427f3697b090fed00b07e7c61990bb7ea31 (diff) | |
download | armnn-b8cc2b9257640a560fb3e9627a2654acf32dbf8d.tar.gz |
IVGCVSW-6416 AddFullyConnected API crashes without connected weights/bias layers
* Created method in Graph.cpp/hpp ConstructErrorMessageForUnconnectedInputs() to
verify weights and bias are set for FullyConnected layers.
* Above method called in Graph.cpp InferTensorInfos() to print a more descriptive
message when the weights or bias for a FullyConnectedLayer is not set.
* Added try-catch in TestUtils.cpp Connect() to ensure input slot is available
when connecting two layers. This ensures we catch the case where bias is
is not enabled and we try and set a bias layer.
* Added unit tests to check for LayerValidationError when weights or
bias is not set on a FullyConnectedLayer.
* Added unit test to check for LayerValidationError when bias is not
enabled and we try and connect bias to FullyConnected Layer.
* Seperated FullyConnected EndToEnd unit test method into two methods.
First, performs tests on EndToEnd examples asserting output value.
Second, performs tests on error catching.
* Added comments to created methods.
Signed-off-by: Cathal Corbett <cathal.corbett@arm.com>
Change-Id: I5207d8c5ebacfff598556742ccd4f53eef7dee0c
Diffstat (limited to 'src/armnn/test')
-rw-r--r-- | src/armnn/test/TestUtils.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/armnn/test/TestUtils.cpp b/src/armnn/test/TestUtils.cpp index 6020c7631c..97cc80c8a2 100644 --- a/src/armnn/test/TestUtils.cpp +++ b/src/armnn/test/TestUtils.cpp @@ -15,7 +15,29 @@ void Connect(armnn::IConnectableLayer* from, armnn::IConnectableLayer* to, const ARMNN_ASSERT(from); ARMNN_ASSERT(to); - from->GetOutputSlot(fromIndex).Connect(to->GetInputSlot(toIndex)); + try + { + from->GetOutputSlot(fromIndex).Connect(to->GetInputSlot(toIndex)); + } + catch (const std::out_of_range& exc) + { + std::ostringstream message; + + if (to->GetType() == armnn::LayerType::FullyConnected && toIndex == 2) + { + message << "Tried to connect bias to FullyConnected layer when bias is not enabled: "; + } + + message << "Failed to connect to input slot " + << toIndex + << " on " + << GetLayerTypeAsCString(to->GetType()) + << " layer " + << std::quoted(to->GetName()) + << " as the slot does not exist or is unavailable"; + throw LayerValidationException(message.str()); + } + from->GetOutputSlot(fromIndex).SetTensorInfo(tensorInfo); } |