[CPU] Fixed weights candidate initialization in FC node
authordmitrygo <dmitry.gorokhov@intel.com>
Thu, 4 Jun 2020 17:13:59 +0000 (20:13 +0300)
committerAlexander Peskov <alexander.peskov@intel.com>
Tue, 9 Jun 2020 11:11:18 +0000 (14:11 +0300)
inference-engine/src/mkldnn_plugin/nodes/mkldnn_fullyconnected_node.cpp

index af53146..4717e06 100644 (file)
@@ -101,11 +101,12 @@ void MKLDNNFullyConnectedNode::getSupportedDescriptors() {
         THROW_IE_EXCEPTION << "Incorrect number of output edges for layer " << getName();
 
     MKLDNNDims inDims(fcLayer->input()->getDims());
+    MKLDNNDims outDims(fcLayer->outData[0]->getDims());
 
     if (inDims.ndims() == 2) {
         weightsDims = {fcLayer->_out_num, static_cast<size_t>(inDims[1])};
     } else if (inDims.ndims() == 3) {
-        weightsDims = {fcLayer->_out_num, static_cast<size_t>(inDims[2])};
+        weightsDims = {static_cast<size_t>(outDims[2]), static_cast<size_t>(inDims[2])};
     } else if (inDims.ndims() == 4) {
         weightsDims = {fcLayer->_out_num, static_cast<size_t>(inDims[1]), static_cast<size_t>(inDims[2]),
                        static_cast<size_t>(inDims[3])};
@@ -122,7 +123,11 @@ void MKLDNNFullyConnectedNode::getSupportedDescriptors() {
     }
 
     withBiases = (fcLayer->_biases != nullptr && fcLayer->_biases->size() != 0) || baseInputsNumber == 3;
-    biasesDims.push_back(static_cast<int>(fcLayer->_out_num));
+    if (inDims.ndims() == 3) {
+        biasesDims.push_back(static_cast<int>(outDims[2]));
+    } else {
+        biasesDims.push_back(static_cast<int>(fcLayer->_out_num));
+    }
     if (withBiases && baseInputsNumber == 1) {
         internalBlobs.push_back(createInternalBlob(biasesDims, false));
     }