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))