class_docstr: Aggregates via mean followed by matmul and non-linearity.
class_docstr_tok: ["Aggregates","via","mean","followed","by","matmul","and","non-linearity","."]
code: def _call(self, inputs):
      self_vecs, neigh_vecs = inputs
  
      neigh_vecs = tf.nn.dropout(neigh_vecs, 1 - self.dropout)
      self_vecs = tf.nn.dropout(self_vecs, 1 - self.dropout)
      neigh_means = tf.reduce_mean(neigh_vecs, axis=1)
  
      # [nodes] x [out_dim]
      from_neighs = tf.matmul(neigh_means, self.vars["neigh_weights"])
  
      from_self = tf.matmul(self_vecs, self.vars["self_weights"])
  
      if not self.concat:
          output = tf.add_n([from_self, from_neighs])
      else:
          output = tf.concat([from_self, from_neighs], axis=1)
  
      # bias
      if self.bias:
          output += self.vars["bias"]
  
      return self.act(output)
  
imports: import tensorflow
  from .layers import Layer, Dense
  from .inits import glorot, zeros
label_desc: Use image node_id 2 for calling the MeanAggregator obj's underlying member method code with example usage: obj._call(inputs) and returns: self