code: def __call__(self, inputs, index, size=None):
      size = tf.reduce_max(index) + 1 if size is None else size
  
      gate = self.gate_nn(inputs)
      inputs = self.nn(inputs) if self.nn is not None else inputs
  
      gate = mp_ops.scatter_softmax(gate, index, size=size)
      outputs = mp_ops.scatter_(
          self.aggr, gate * inputs, index, size=size
      )
      return outputs
  
imports: import tensorflow
  from tf_euler.python.euler_ops import mp_ops
  from tf_euler.python.graph_pool.base_pool import Pooling
label_desc: Use image node_id 2 for calling the AttentionPool obj's underlying member method code with example usage: obj.__call__(inputs, index, size) and returns: outputs