diff options
author | FinnWilliamsArm <Finn.Williams@Arm.com> | 2020-01-08 14:57:47 +0000 |
---|---|---|
committer | David Monahan <david.monahan@arm.com> | 2020-01-15 15:53:55 +0000 |
commit | 20e8916bee2a9ddb84ee61daf56fefd9c624cfbc (patch) | |
tree | 29c31402ae35cf844d29eccf578b54ffd29cb0c4 | |
parent | 3500e64f69bd48bfd13b8b2266e4f6c2eb9da838 (diff) | |
download | android-nn-driver-20e8916bee2a9ddb84ee61daf56fefd9c624cfbc.tar.gz |
IVGCVSW-4315 Fix Fully Connected infer output shape bug
Change-Id: If4fd1abdedf7de2046435d418fb1ee95ceb73419
Signed-off-by: FinnWilliamsArm <Finn.Williams@Arm.com>
-rw-r--r-- | 1.0/FullyConnected.hpp | 13 | ||||
-rw-r--r-- | ConversionUtils.hpp | 8 |
2 files changed, 19 insertions, 2 deletions
diff --git a/1.0/FullyConnected.hpp b/1.0/FullyConnected.hpp index 26d61e4c..56997ad2 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 afaf1af7..acf215d5 100644 --- a/ConversionUtils.hpp +++ b/ConversionUtils.hpp @@ -2336,6 +2336,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, |