aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFinnWilliamsArm <Finn.Williams@Arm.com>2020-01-08 14:57:47 +0000
committerTeresa Charlin <teresa.charlinreyes@arm.com>2020-01-15 14:58:23 +0000
commit42defa6c2bc2574f39963554937bdf81e49be449 (patch)
tree1240c2b1fb3dff143db0997562dc987f834ed03b
parent2c90f75496d2c0210a43f35ddb75f6492dd06490 (diff)
downloadandroid-nn-driver-branches/android-nn-driver_19_11.tar.gz
IVGCVSW-4315 Fix Fully Connected infer output shape bugv19.11.1branches/android-nn-driver_19_11
Change-Id: If4fd1abdedf7de2046435d418fb1ee95ceb73419 Signed-off-by: FinnWilliamsArm <Finn.Williams@Arm.com>
-rw-r--r--1.0/FullyConnected.hpp13
-rw-r--r--ConversionUtils.hpp8
2 files changed, 19 insertions, 2 deletions
diff --git a/1.0/FullyConnected.hpp b/1.0/FullyConnected.hpp
index 26d61e4..56997ad 100644
--- a/1.0/FullyConnected.hpp
+++ b/1.0/FullyConnected.hpp
@@ -12,8 +12,8 @@
namespace armnn_driver
{
-inline armnn::TensorShape FlattenFullyConnectedInput(const armnn::TensorShape &inputShape,
- const armnn::TensorShape &weightsShape)
+inline armnn::TensorShape FlattenFullyConnectedInput(const armnn::TensorShape& inputShape,
+ const armnn::TensorShape& weightsShape)
{
if (inputShape.GetNumDimensions() > 2U)
{
@@ -35,4 +35,13 @@ inline armnn::TensorShape FlattenFullyConnectedInput(const armnn::TensorShape &i
}
}
+inline bool VerifyFullyConnectedShapes(const armnn::TensorShape& inputShape,
+ const armnn::TensorShape& weightsShape,
+ const armnn::TensorShape& outputShape,
+ bool transposeWeightMatrix)
+{
+ unsigned int dimIdx = transposeWeightMatrix ? 0 : 1;
+ return (inputShape[0] == outputShape[0] && weightsShape[dimIdx] == outputShape[1]);
+}
+
} \ No newline at end of file
diff --git a/ConversionUtils.hpp b/ConversionUtils.hpp
index a342d39..3a144f7 100644
--- a/ConversionUtils.hpp
+++ b/ConversionUtils.hpp
@@ -2645,6 +2645,14 @@ bool ConvertFullyConnected(const Operation& operation, const Model& model, Conve
desc.m_TransposeWeightMatrix = true;
desc.m_BiasEnabled = true;
+ if (!VerifyFullyConnectedShapes(reshapedInfo.GetShape(),
+ weights.GetInfo().GetShape(),
+ outputInfo.GetShape(),
+ desc.m_TransposeWeightMatrix))
+ {
+ return Fail("%s: Expected outputShape does not match actual outputShape", __func__);
+ }
+
bool isSupported = false;
FORWARD_LAYER_SUPPORT_FUNC(__func__,
IsFullyConnectedSupported,