MCPcopy Index your code
hub / github.com/tensorflow/tfjs / buildMapOfGraph

Function buildMapOfGraph

tfjs-layers/src/engine/container.ts:262–311  ·  view source on GitHub ↗
(tensor: SymbolicTensor, finishedNodes: Node[], nodesInProgress: Node[],
         layer?: Layer, nodeIndex?: number, tensorIndex?: number)

Source from the content-addressed store, hash-verified

260 */
261 const buildMapOfGraph =
262 (tensor: SymbolicTensor, finishedNodes: Node[], nodesInProgress: Node[],
263 layer?: Layer, nodeIndex?: number, tensorIndex?: number) => {
264 if (layer == null || nodeIndex == null || tensorIndex == null) {
265 layer = tensor.sourceLayer;
266 nodeIndex = tensor.nodeIndex;
267 tensorIndex = tensor.tensorIndex;
268 }
269 const node = layer.inboundNodes[nodeIndex];
270
271 // Prevent cycles.
272 if (nodesInProgress.indexOf(node) !== -1) {
273 throw new RuntimeError(
274 `The tensor ${tensor.name} at layer "${layer.name}" ` +
275 'is part of a cycle.');
276 }
277
278 // Don't repeat work for shared subgraphs
279 if (finishedNodes.indexOf(node) !== -1) {
280 return;
281 }
282
283 // Update containerNodes.
284 this.containerNodes.add(Container.nodeKey(layer, nodeIndex));
285
286 // Store the traversal order for layer sorting.
287 if (!(layer.id in layerIndices)) {
288 layerIndices[layer.id] = Object.keys(layerIndices).length;
289 }
290
291 if (nodesInProgress.indexOf(node) === -1) {
292 nodesInProgress.push(node);
293 }
294
295 // Propagate to all previous tensors connected to this node.
296 const numInboundLayers = node.inboundLayers.length;
297 for (let i = 0; i < numInboundLayers; i++) {
298 const x = node.inputTensors[i];
299 const layer = node.inboundLayers[i];
300 const nodeIndex = node.nodeIndices[i];
301 const tensorIndex = node.tensorIndices[i];
302 buildMapOfGraph(
303 x, finishedNodes, nodesInProgress, layer, nodeIndex,
304 tensorIndex);
305 }
306 finishedNodes.push(node);
307 while (nodesInProgress.indexOf(node) >= 0) {
308 nodesInProgress.splice(nodesInProgress.indexOf(node), 1);
309 }
310 nodesInDecreasingDepth.push(node);
311 };
312
313 const finishedNodes: Node[] = [];
314 const nodesInProgress: Node[] = [];

Callers 1

constructorFunction · 0.85

Calls 2

addMethod · 0.65
pushMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…