From 55260a8d3c2632d9497f0fa6030d75e6b3d0457f Mon Sep 17 00:00:00 2001 From: Li Peng Date: Mon, 13 Nov 2017 09:06:41 +0800 Subject: [PATCH] reshape mat before doing computation in fc layer Signed-off-by: Li Peng --- modules/dnn/src/layers/fully_connected_layer.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/dnn/src/layers/fully_connected_layer.cpp b/modules/dnn/src/layers/fully_connected_layer.cpp index 184e2b824f..59d8ed935b 100644 --- a/modules/dnn/src/layers/fully_connected_layer.cpp +++ b/modules/dnn/src/layers/fully_connected_layer.cpp @@ -286,8 +286,13 @@ public: UMat biasOnesMat = UMat::ones(outerSize, 1, umat_blobs[0].type()); for (size_t i = 0; i < inputs.size(); i++) { - UMat& srcMat = inputs[i]; - UMat& dstMat = outputs[i]; + MatShape inshape, outshape; + inshape = shape(outerSize, innerSize); + outshape = shape(outerSize, numOutput); + + UMat srcMat, dstMat; + srcMat = inputs[i].reshape(1, inshape.size(), &inshape[0]); + dstMat = outputs[i].reshape(1, outshape.size(), &outshape[0]); dstMat.setTo(0.0f); if (!innerProductOp->Forward(srcMat, umat_blobs[0], (bias) ? umat_blobs[1] : UMat(), dstMat))