class_docstr: Set2Set operator from `Order Matters: Sequence to sequence for sets
  <https://arxiv.org/pdf/1511.06391.pdf>`__
  
  For each individual graph in the batch, set2set computes
  
  .. math::
      q_t &= \mathrm{LSTM} (q^*_{t-1})
  
      \alpha_{i,t} &= \mathrm{softmax}(x_i \cdot q_t)
  
      r_t &= \sum_{i=1}^N \alpha_{i,t} x_i
  
      q^*_t &= q_t \Vert r_t
  
  for this graph.
  
  Parameters
  ----------
  input_dim : int
      Size of each input sample
  n_iters : int
      Number of iterations.
  n_layers : int
      Number of recurrent layers.
code: def __init__(self, input_dim, n_iters, n_layers):
      super(Set2Set, self).__init__()
      self.input_dim = input_dim
      self.output_dim = 2 * input_dim
      self.n_iters = n_iters
      self.n_layers = n_layers
      with self.name_scope():
          self.lstm = gluon.rnn.LSTM(
              self.input_dim,
              num_layers=n_layers,
              input_size=self.output_dim,
          )
  
imports: from mxnet import gluon, nd
  from mxnet.gluon import nn
  from ...readout import broadcast_nodes, max_nodes, mean_nodes, softmax_nodes, sum_nodes, topk_nodes
label_desc: Use image node_id 1 to create a new Set2Set object from inherited base classes: nn with example: obj = Set2Set(input_dim, n_iters, n_layers)