MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / ExtendGraph

Function ExtendGraph

tensorflow/core/graph/graph_constructor.cc:1829–1870  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1827} // namespace
1828
1829void ExtendGraph(Graph* dest, std::unordered_set<const Node*> excluded,
1830 int32 duplicate_num) {
1831 // Copy the nodes "Node in src" -> "Node in *dest"
1832 map_node_list duplicated_nodes;
1833 map_node margin_nodes;
1834 for (Node* n : dest->op_nodes()) {
1835 if (excluded.find(n) != excluded.end()) {
1836 continue;
1837 }
1838 if (n->IsVariable() || n->IsConstant() || n->IsPlaceholder()) {
1839 margin_nodes.emplace(n, n);
1840 } else {
1841 duplicated_nodes.emplace(n, DuplicateNode(n, dest, duplicate_num));
1842 }
1843 }
1844
1845 // Copy the edges
1846 auto edges = DuplicateEdges(dest, duplicated_nodes, margin_nodes);
1847 for (auto it : edges) {
1848 dest->AddEdge(it.src, it.src_output, it.dst, it.dst_input);
1849 }
1850
1851 // Add aggregate nodes for Apply***
1852 for (Node* n : dest->op_nodes()) {
1853 if (n->IsApplyAdagradOps() || n->IsApplyFtrlOps()) {
1854 AggregateForApply(dest, n, duplicated_nodes, 3);
1855 }
1856 // concat ------------------------------->
1857 // concat(indices) --> unique(indices) --> unsorted_segment_sum
1858 if (n->IsSparseApplyAdagradOps() || n->IsSparseApplyFtrlOps()) {
1859 AggregateForSparseApply(dest, n, duplicated_nodes, 3, 4);
1860 }
1861
1862 if (n->IsApplyAdamOps()) {
1863 AggregateForApply(dest, n, duplicated_nodes, 9);
1864 }
1865
1866 if (n->IsApplySparseAdamOps()) {
1867 AggregateForSparseApply(dest, n, duplicated_nodes, 9, 10);
1868 }
1869 }
1870}
1871
1872} // namespace tensorflow

Callers 1

PipelineGraphMethod · 0.85

Calls 15

DuplicateNodeFunction · 0.85
DuplicateEdgesFunction · 0.85
AggregateForApplyFunction · 0.85
AggregateForSparseApplyFunction · 0.85
op_nodesMethod · 0.80
IsVariableMethod · 0.80
IsPlaceholderMethod · 0.80
IsApplyAdagradOpsMethod · 0.80
IsApplyFtrlOpsMethod · 0.80
IsSparseApplyFtrlOpsMethod · 0.80
IsApplyAdamOpsMethod · 0.80

Tested by

no test coverage detected