diff --git a/modules/dnn/src/tensorflow/tf_importer.cpp b/modules/dnn/src/tensorflow/tf_importer.cpp index 9fb8f60b41..5fafa2b9d5 100644 --- a/modules/dnn/src/tensorflow/tf_importer.cpp +++ b/modules/dnn/src/tensorflow/tf_importer.cpp @@ -646,7 +646,7 @@ const TFImporter::DispatchMap TFImporter::buildDispatchMap() dispatch["Conv2D"] = dispatch["SpaceToBatchND"] = dispatch["DepthwiseConv2dNative"] = dispatch["Pad"] = dispatch["MirrorPad"] = dispatch["Conv3D"] = &TFImporter::parseConvolution; dispatch["BiasAdd"] = dispatch["Add"] = dispatch["AddV2"] = dispatch["Sub"] = dispatch["AddN"] = &TFImporter::parseBias; - dispatch["MatMul"] = &TFImporter::parseMatMul; + dispatch["MatMul"] = dispatch["BatchMatMul"] = &TFImporter::parseMatMul; dispatch["Reshape"] = &TFImporter::parseReshape; dispatch["Flatten"] = dispatch["Squeeze"] = &TFImporter::parseFlatten; dispatch["Transpose"] = &TFImporter::parseTranspose; @@ -983,6 +983,24 @@ void TFImporter::parseMatMul(tensorflow::GraphDef& net, const tensorflow::NodeDe layerParams.set("bias_term", false); layerParams.blobs.resize(1); + bool hasConstBlob = false; + for(int i = 0; i < layer.input_size(); i++) { + if (value_id.find(layer.input(i)) != value_id.end()) + hasConstBlob = true; + } + if (!hasConstBlob) + { + layerParams.blobs.clear(); + int id = dstNet.addLayer(name, "InnerProduct", layerParams); + layer_id[name] = id; + + // two inputs + for(int ii=0; ii