class_docstr: The graph isomorphism operator from the `"How Powerful are
  Graph Neural Networks?" <https://arxiv.org/abs/1810.00826>`_ paper
  
  .. math::
      \mathbf{x}^{\prime}_i = h_{\mathbf{\Theta}} \left( (1 + \epsilon) \cdot
      \mathbf{x}_i + \sum_{j \in \mathcal{N}(i)} \mathbf{x}_j \right)
  
  or
  
  .. math::
      \mathbf{X}^{\prime} = h_{\mathbf{\Theta}} \left( \left( \mathbf{A} +
      (1 + \epsilon) \cdot \mathbf{I} \right) \cdot \mathbf{X} \right),
  
  here :math:`h_{\mathbf{\Theta}}` denotes a neural network, *.i.e.* an MLP.
  
  Args:
      nn (torch.nn.Module): A neural network :math:`h_{\mathbf{\Theta}}` that
          maps node features :obj:`x` of shape :obj:`[-1, in_channels]` to
          shape :obj:`[-1, out_channels]`, *e.g.*, defined by
          :class:`torch.nn.Sequential`.
      eps (float, optional): (Initial) :math:`\epsilon`-value.
          (default: :obj:`0.`)
      train_eps (bool, optional): If set to :obj:`True`, :math:`\epsilon`
          will be a trainable parameter. (default: :obj:`False`)
      **kwargs (optional): Additional arguments of
          :class:`torch_geometric.nn.conv.MessagePassing`.
  
  Shapes:
      - **input:**
        node features :math:`(|\mathcal{V}|, F_{in})` or
        :math:`((|\mathcal{V_s}|, F_{s}), (|\mathcal{V_t}|, F_{t}))`
        if bipartite,
        edge indices :math:`(2, |\mathcal{E}|)`
      - **output:** node features :math:`(|\mathcal{V}|, F_{out})` or
        :math:`(|\mathcal{V}_t|, F_{out})` if bipartite
class_docstr_tok: ["The","graph","isomorphism","operator","from","the","`","``","How","Powerful","are","Graph","Neural","Networks","?","''","<","https",":","\/\/arxiv.org\/abs\/1810.00826",">","`","_","paper","..","math",":",":","\\mathbf","{","x","}","^","{","\\prime","}","_i","=","h_","{","\\mathbf","{","\\Theta","}","}","\\left","(","(","1","+","\\epsilon",")","\\cdot","\\mathbf","{","x","}","_i","+","\\sum_","{","j","\\in","\\mathcal","{","N","}","(","i",")","}","\\mathbf","{","x","}","_j","\\right",")","or","..","math",":",":","\\mathbf","{","X","}","^","{","\\prime","}","=","h_","{","\\mathbf","{","\\Theta","}","}","\\left","(","\\left","(","\\mathbf","{","A","}","+","(","1","+","\\epsilon",")","\\cdot","\\mathbf","{","I","}","\\right",")","\\cdot","\\mathbf","{","X","}","\\right",")",",","here",":","math",":","`","h_","{","\\mathbf","{","\\Theta","}","}","`","denotes","a","neural","network",",","*",".i.e",".","*","an","MLP",".","Args",":","nn","(","torch.nn.Module",")",":","A","neural","network",":","math",":","`","h_","{","\\mathbf","{","\\Theta","}","}","`","that","maps","node","features",":","obj",":","`","x","`","of","shape",":","obj",":","`","[","-1",",","in_channels","]","`","to","shape",":","obj",":","`","[","-1",",","out_channels","]","`",",","*","e.g",".","*",",","defined","by",":","class",":","`","torch.nn.Sequential","`",".","eps","(","float",",","optional",")",":","(","Initial",")",":","math",":","`","\\epsilon","`","-value",".","(","default",":",":","obj",":","`","0.","`",")","train_eps","(","bool",",","optional",")",":","If","set","to",":","obj",":","`","True","`",",",":","math",":","`","\\epsilon","`","will","be","a","trainable","parameter",".","(","default",":",":","obj",":","`","False","`",")","*","*","kwargs","(","optional",")",":","Additional","arguments","of",":","class",":","`","torch_geometric.nn.conv.MessagePassing","`",".","Shapes",":","-","*","*","input",":","*","*","node","features",":","math",":","`","(","|\\mathcal","{","V","}","|",",","F_","{","in","}",")","`","or",":","math",":","`","(","(","|\\mathcal","{","V_s","}","|",",","F_","{","s","}",")",",","(","|\\mathcal","{","V_t","}","|",",","F_","{","t","}",")",")","`","if","bipartite",",","edge","indices",":","math",":","`","(","2",",","|\\mathcal","{","E","}","|",")","`","-","*","*","output",":","*","*","node","features",":","math",":","`","(","|\\mathcal","{","V","}","|",",","F_","{","out","}",")","`","or",":","math",":","`","(","|\\mathcal","{","V","}","_t|",",","F_","{","out","}",")","`","if","bipartite"]
code: def message_and_aggregate(
      self, adj_t: SparseTensor, x: OptPairTensor
  ) -> Tensor:
      adj_t = adj_t.set_value(None, layout=None)
      return matmul(adj_t, x[0], reduce=self.aggr)
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  import torch_geometric.transforms
  from torch_geometric.nn.conv import MessagePassing
  from torch_geometric.nn.glob import global_add_pool, global_mean_pool, global_max_pool
  from typing import List, Optional, Union, Callable
  from torch import Tensor
  from torch_scatter import scatter
  from torch_geometric.nn.models.basic_gnn import BasicGNN
  from torch_geometric.nn.models import MLP
  from torch_geometric.typing import Adj, OptPairTensor, OptTensor, Size
  from torch_sparse import SparseTensor, matmul
  from torch.nn import Linear, Sequential, ReLU, BatchNorm1d
  from torch_geometric.nn.inits import reset
label_desc: Use image node_id 5 for calling the GINConv obj's underlying member method code with example usage: obj.message_and_aggregate(adj_t, x) and returns: matmul