class_docstr: The continuous kernel-based convolutional operator from the
  `"Neural Message Passing for Quantum Chemistry"
  <https://arxiv.org/abs/1704.01212>`_ paper.
  
  This convolution is also known as the edge-conditioned convolution from the
  `"Dynamic Edge-Conditioned Filters in Convolutional Neural Networks on
  Graphs" <https://arxiv.org/abs/1704.02901>`_ paper (see
  :class:`torch_geometric.nn.conv.ECConv` for an alias):
  
  .. math::
      \mathbf{x}^{\prime}_i = \mathbf{\Theta} \mathbf{x}_i +
      \sum_{j \in \mathcal{N}(i)} \mathbf{x}_j \cdot
      h_{\mathbf{\Theta}}(\mathbf{e}_{i,j}),
  
  where :math:`h_{\mathbf{\Theta}}` denotes a neural network, *.i.e.*
  a MLP.
  
  Args:
      in_channels (int or tuple): Size of each input sample, or :obj:`-1` to
          derive the size from the first input(s) to the forward method.
          A tuple corresponds to the sizes of source and target
          dimensionalities.
      out_channels (int): Size of each output sample.
      nn (torch.nn.Module): A neural network :math:`h_{\mathbf{\Theta}}` that
          maps edge features :obj:`edge_attr` of shape :obj:`[-1,
          num_edge_features]` to shape
          :obj:`[-1, in_channels * out_channels]`, *e.g.*, defined by
          :class:`torch.nn.Sequential`.
      aggr (str, optional): The aggregation scheme to use
          (:obj:`"add"`, :obj:`"mean"`, :obj:`"max"`).
          (default: :obj:`"add"`)
      root_weight (bool, optional): If set to :obj:`False`, the layer will
          not add the transformed root node features to the output.
          (default: :obj:`True`)
      bias (bool, optional): If set to :obj:`False`, the layer will not learn
          an additive bias. (default: :obj:`True`)
      **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}|)`,
        edge features :math:`(|\mathcal{E}|, D)` *(optional)*
      - **output:** node features :math:`(|\mathcal{V}|, F_{out})` or
        :math:`(|\mathcal{V}_t|, F_{out})` if bipartite
class_docstr_tok: ["The","continuous","kernel-based","convolutional","operator","from","the","`","``","Neural","Message","Passing","for","Quantum","Chemistry","''","<","https",":","\/\/arxiv.org\/abs\/1704.01212",">","`","_","paper",".","This","convolution","is","also","known","as","the","edge-conditioned","convolution","from","the","`","``","Dynamic","Edge-Conditioned","Filters","in","Convolutional","Neural","Networks","on","Graphs","''","<","https",":","\/\/arxiv.org\/abs\/1704.02901",">","`","_","paper","(","see",":","class",":","`","torch_geometric.nn.conv.ECConv","`","for","an","alias",")",":","..","math",":",":","\\mathbf","{","x","}","^","{","\\prime","}","_i","=","\\mathbf","{","\\Theta","}","\\mathbf","{","x","}","_i","+","\\sum_","{","j","\\in","\\mathcal","{","N","}","(","i",")","}","\\mathbf","{","x","}","_j","\\cdot","h_","{","\\mathbf","{","\\Theta","}","}","(","\\mathbf","{","e","}","_","{","i",",","j","}",")",",","where",":","math",":","`","h_","{","\\mathbf","{","\\Theta","}","}","`","denotes","a","neural","network",",","*",".i.e",".","*","a","MLP",".","Args",":","in_channels","(","int","or","tuple",")",":","Size","of","each","input","sample",",","or",":","obj",":","`","-1","`","to","derive","the","size","from","the","first","input","(","s",")","to","the","forward","method",".","A","tuple","corresponds","to","the","sizes","of","source","and","target","dimensionalities",".","out_channels","(","int",")",":","Size","of","each","output","sample",".","nn","(","torch.nn.Module",")",":","A","neural","network",":","math",":","`","h_","{","\\mathbf","{","\\Theta","}","}","`","that","maps","edge","features",":","obj",":","`","edge_attr","`","of","shape",":","obj",":","`","[","-1",",","num_edge_features","]","`","to","shape",":","obj",":","`","[","-1",",","in_channels","*","out_channels","]","`",",","*","e.g",".","*",",","defined","by",":","class",":","`","torch.nn.Sequential","`",".","aggr","(","str",",","optional",")",":","The","aggregation","scheme","to","use","(",":","obj",":","`","``","add","''","`",",",":","obj",":","`","``","mean","''","`",",",":","obj",":","`","``","max","''","`",")",".","(","default",":",":","obj",":","`","``","add","''","`",")","root_weight","(","bool",",","optional",")",":","If","set","to",":","obj",":","`","False","`",",","the","layer","will","not","add","the","transformed","root","node","features","to","the","output",".","(","default",":",":","obj",":","`","True","`",")","bias","(","bool",",","optional",")",":","If","set","to",":","obj",":","`","False","`",",","the","layer","will","not","learn","an","additive","bias",".","(","default",":",":","obj",":","`","True","`",")","*","*","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","}","|",")","`",",","edge","features",":","math",":","`","(","|\\mathcal","{","E","}","|",",","D",")","`","*","(","optional",")","*","-","*","*","output",":","*","*","node","features",":","math",":","`","(","|\\mathcal","{","V","}","|",",","F_","{","out","}",")","`","or",":","math",":","`","(","|\\mathcal","{","V","}","_t|",",","F_","{","out","}",")","`","if","bipartite"]
code: def __repr__(self) -> str:
      return (
          f"{self.__class__.__name__}({self.in_channels}, "
          f"{self.out_channels}, aggr={self.aggr}, nn={self.nn})"
      )
  
file_path: pytorch_geometric/torch_geometric/nn/conv/nn_conv.py
imports: from typing import Callable, Tuple, Union
  import torch
  from torch import Tensor
  from torch.nn import Parameter
  from torch_geometric.nn.conv import MessagePassing
  from torch_geometric.nn.dense.linear import Linear
  from torch_geometric.nn.inits import reset, zeros
  from torch_geometric.typing import Adj, OptPairTensor, OptTensor, Size
label_desc: Use image node_id 5 for calling the NNConv obj's underlying member method code with example usage: obj.__repr__() and returns: self, str, self, str, self, str, self, str, self, str