code: def _create_complete_edges_from_nodes_dynamic(
      n_node, exclude_self_edges
  ):
      """Creates complete edges for a graph with `n_node`.
  
      Args:
        n_node: (integer scalar `Tensor`) The number of nodes.
        exclude_self_edges: (bool) Excludes self-connected edges.
  
      Returns:
        A dict of RECEIVERS, SENDERS and N_EDGE data (`Tensor`s of rank 1).
      """
      rng = tf.range(n_node)
      receivers, senders = tf.meshgrid(rng, rng)
      n_edge = n_node * n_node
  
      if exclude_self_edges:
          ind = tf.cast(1 - tf.eye(n_node), bool)
          receivers = tf.boolean_mask(receivers, ind)
          senders = tf.boolean_mask(senders, ind)
          n_edge -= n_node
  
      receivers = tf.reshape(tf.cast(receivers, tf.int32), [n_edge])
      senders = tf.reshape(tf.cast(senders, tf.int32), [n_edge])
      n_edge = tf.reshape(n_edge, [1])
  
      return {RECEIVERS: receivers, SENDERS: senders, N_EDGE: n_edge}
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import collections
  import functools
  from absl import logging
  from graph_nets import graphs
  from graph_nets import utils_np
  import six
  from six.moves import range
  import tensorflow
  import tree
label_desc: Use image node_id 18 for calling a global function with example usage: _create_complete_edges_from_nodes_dynamic(n_node, exclude__edges) and returns: dict