class_docstr: DeepSets module.
  
  Implementation for the model described in https://arxiv.org/abs/1703.06114
  (M. Zaheer, S. Kottur, S. Ravanbakhsh, B. Poczos, R. Salakhutdinov, A. Smola).
  See also PointNet (https://arxiv.org/abs/1612.00593, C. Qi, H. Su, K. Mo,
  L. J. Guibas) for a related model.
  
  This module operates on sets, which can be thought of as graphs without
  edges. The nodes features are first updated based on their value and the
  globals features, and new globals features are then computed based on the
  updated nodes features.
  
  Note that in the original model, only the globals are updated in the returned
  graph, while this implementation also returns updated nodes.
  The original model can be reproduced by writing:
  ```
  deep_sets = DeepSets()
  output = deep_sets(input)
  output = input.replace(globals=output.globals)
  ```
  
  This module does not use the edges data or the information contained in the
  receivers or senders; the output graph has the same value in those fields as
  the input graph. Those fields can also have `None` values in the input
  `graphs.GraphsTuple`.
docstr: Connects the DeepSets network.
  
  Args:
    graph: A `graphs.GraphsTuple` containing `Tensor`s, whose edges, senders
      or receivers properties may be `None`. The features of every node and
      global of `graph` should be concatenable on the last axis (i.e. the
      shapes of `graph.nodes` and `graph.globals` must match but for their
      first and last axis).
    node_model_kwargs: Optional keyword arguments to pass to
      the node block model.
    global_model_kwargs: Optional keyword arguments to pass to
      the global block model.
  
  Returns:
    An output `graphs.GraphsTuple` with updated globals.
code: def _build(
      self, graph, node_model_kwargs=None, global_model_kwargs=None
  ):
      """Connects the DeepSets network.
  
      Args:
        graph: A `graphs.GraphsTuple` containing `Tensor`s, whose edges, senders
          or receivers properties may be `None`. The features of every node and
          global of `graph` should be concatenable on the last axis (i.e. the
          shapes of `graph.nodes` and `graph.globals` must match but for their
          first and last axis).
        node_model_kwargs: Optional keyword arguments to pass to
          the node block model.
        global_model_kwargs: Optional keyword arguments to pass to
          the global block model.
  
      Returns:
        An output `graphs.GraphsTuple` with updated globals.
      """
      return self._global_block(
          self._node_block(graph, node_model_kwargs),
          global_model_kwargs,
      )
  
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 2 for calling the DeepSets obj's underlying member method code with example usage: obj._build(graph, node_model_kwargs, global_model_kwargs) and returns: self