Commit 993b9af7 authored by Alexander Alekhin's avatar Alexander Alekhin

Merge pull request #16270 from dkurt:dnn_sort_tf_text_graphs

parents e180cc05 f954f083
...@@ -950,6 +950,7 @@ void sortByExecutionOrder(tensorflow::GraphDef& net) ...@@ -950,6 +950,7 @@ void sortByExecutionOrder(tensorflow::GraphDef& net)
for (int i = 0; i < net.node_size(); ++i) for (int i = 0; i < net.node_size(); ++i)
{ {
const tensorflow::NodeDef& node = net.node(i); const tensorflow::NodeDef& node = net.node(i);
int numInputsInGraph = 0;
for (int j = 0; j < node.input_size(); ++j) for (int j = 0; j < node.input_size(); ++j)
{ {
std::string inpName = node.input(j); std::string inpName = node.input(j);
...@@ -957,22 +958,25 @@ void sortByExecutionOrder(tensorflow::GraphDef& net) ...@@ -957,22 +958,25 @@ void sortByExecutionOrder(tensorflow::GraphDef& net)
inpName = inpName.substr(inpName.find('^') + 1); inpName = inpName.substr(inpName.find('^') + 1);
nodesMapIt = nodesMap.find(inpName); nodesMapIt = nodesMap.find(inpName);
CV_Assert(nodesMapIt != nodesMap.end()); if (nodesMapIt != nodesMap.end())
edges[nodesMapIt->second].push_back(i); {
edges[nodesMapIt->second].push_back(i);
numInputsInGraph += 1;
}
} }
if (node.input_size() == 0) if (numInputsInGraph == 0)
nodesToAdd.push_back(i); nodesToAdd.push_back(i);
else else
{ {
if (node.op() == "Merge" || node.op() == "RefMerge") if (node.op() == "Merge" || node.op() == "RefMerge")
{ {
int numControlEdges = 0; int numControlEdges = 0;
for (int j = 0; j < node.input_size(); ++j) for (int j = 0; j < numInputsInGraph; ++j)
numControlEdges += node.input(j)[0] == '^'; numControlEdges += node.input(j)[0] == '^';
numRefsToAdd[i] = numControlEdges + 1; numRefsToAdd[i] = numControlEdges + 1;
} }
else else
numRefsToAdd[i] = node.input_size(); numRefsToAdd[i] = numInputsInGraph;
} }
} }
......
...@@ -715,6 +715,10 @@ void TFImporter::populateNet(Net dstNet) ...@@ -715,6 +715,10 @@ void TFImporter::populateNet(Net dstNet)
simplifySubgraphs(netBin); simplifySubgraphs(netBin);
sortByExecutionOrder(netBin); sortByExecutionOrder(netBin);
} }
else
{
sortByExecutionOrder(netTxt);
}
std::set<String> layers_to_ignore; std::set<String> layers_to_ignore;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment