class_docstr: Implementation of a Graph Network.
  
  See https://arxiv.org/abs/1806.01261 for more details.
docstr: Initializes the GraphNetwork module.
  
  Args:
    edge_model_fn: A callable that will be passed to EdgeBlock to perform
      per-edge computations. The callable must return a Sonnet module (or
      equivalent; see EdgeBlock for details).
    node_model_fn: A callable that will be passed to NodeBlock to perform
      per-node computations. The callable must return a Sonnet module (or
      equivalent; see NodeBlock for details).
    global_model_fn: A callable that will be passed to GlobalBlock to perform
      per-global computations. The callable must return a Sonnet module (or
      equivalent; see GlobalBlock for details).
    reducer: Reducer to be used by NodeBlock and GlobalBlock to aggregate
      nodes and edges. Defaults to tf.math.unsorted_segment_sum. This will be
      overridden by the reducers specified in `node_block_opt` and
      `global_block_opt`, if any.
    edge_block_opt: Additional options to be passed to the EdgeBlock. Can
      contain keys `use_edges`, `use_receiver_nodes`, `use_sender_nodes`,
      `use_globals`. By default, these are all True.
    node_block_opt: Additional options to be passed to the NodeBlock. Can
      contain the keys `use_received_edges`, `use_nodes`, `use_globals` (all
      set to True by default), `use_sent_edges` (defaults to False), and
      `received_edges_reducer`, `sent_edges_reducer` (default to `reducer`).
    global_block_opt: Additional options to be passed to the GlobalBlock. Can
      contain the keys `use_edges`, `use_nodes`, `use_globals` (all set to
      True by default), and `edges_reducer`, `nodes_reducer` (defaults to
      `reducer`).
    name: The module name.
code: def __init__(
      self,
      edge_model_fn,
      node_model_fn,
      global_model_fn,
      reducer=tf.math.unsorted_segment_sum,
      edge_block_opt=None,
      node_block_opt=None,
      global_block_opt=None,
      name="graph_network",
  ):
      """Initializes the GraphNetwork module.
  
      Args:
        edge_model_fn: A callable that will be passed to EdgeBlock to perform
          per-edge computations. The callable must return a Sonnet module (or
          equivalent; see EdgeBlock for details).
        node_model_fn: A callable that will be passed to NodeBlock to perform
          per-node computations. The callable must return a Sonnet module (or
          equivalent; see NodeBlock for details).
        global_model_fn: A callable that will be passed to GlobalBlock to perform
          per-global computations. The callable must return a Sonnet module (or
          equivalent; see GlobalBlock for details).
        reducer: Reducer to be used by NodeBlock and GlobalBlock to aggregate
          nodes and edges. Defaults to tf.math.unsorted_segment_sum. This will be
          overridden by the reducers specified in `node_block_opt` and
          `global_block_opt`, if any.
        edge_block_opt: Additional options to be passed to the EdgeBlock. Can
          contain keys `use_edges`, `use_receiver_nodes`, `use_sender_nodes`,
          `use_globals`. By default, these are all True.
        node_block_opt: Additional options to be passed to the NodeBlock. Can
          contain the keys `use_received_edges`, `use_nodes`, `use_globals` (all
          set to True by default), `use_sent_edges` (defaults to False), and
          `received_edges_reducer`, `sent_edges_reducer` (default to `reducer`).
        global_block_opt: Additional options to be passed to the GlobalBlock. Can
          contain the keys `use_edges`, `use_nodes`, `use_globals` (all set to
          True by default), and `edges_reducer`, `nodes_reducer` (defaults to
          `reducer`).
        name: The module name.
      """
      super(GraphNetwork, self).__init__(name=name)
      edge_block_opt = _make_default_edge_block_opt(edge_block_opt)
      node_block_opt = _make_default_node_block_opt(
          node_block_opt, reducer
      )
      global_block_opt = _make_default_global_block_opt(
          global_block_opt, reducer
      )
  
      with self._enter_variable_scope():
          self._edge_block = blocks.EdgeBlock(
              edge_model_fn=edge_model_fn, **edge_block_opt
          )
          self._node_block = blocks.NodeBlock(
              node_model_fn=node_model_fn, **node_block_opt
          )
          self._global_block = blocks.GlobalBlock(
              global_model_fn=global_model_fn, **global_block_opt
          )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from graph_nets import _base
  from graph_nets import blocks
  import tensorflow
label_desc: Use image node_id 1 to create a new GraphNetwork object from inherited base classes: _base with example: obj = GraphNetwork(edge_model_fn, node_model_fn, global_model_fn, reducer, edge_block_opt, node_block_opt, global_block_opt, name)