class_docstr: The pathfinder discovery network convolutional operator from the
  `"Pathfinder Discovery Networks for Neural Message Passing"
  <https://arxiv.org/pdf/2010.12878.pdf>`_ paper.
  
  .. math::
      \mathbf{x}^{\prime}_i = \sum_{j \in \mathcal{N}(i) \cup
      \{i\}}f_{\Theta}(\textbf{e}_{(j,i)}) \cdot f_{\Omega}(\mathbf{x}_{j})
  
  where :math:`z_{i,j}` denotes the edge feature vector from source node
  :math:`j` to target node :math:`i`, and :math:`\mathbf{x}_{j}` denotes the
  node feature vector of node :math:`j`.
  
  Args:
      in_channels (int): Size of each input sample.
      out_channels (int): Size of each output sample.
      edge_dim (int): Edge feature dimensionality.
      hidden_channels (int): Hidden edge feature dimensionality.
      add_self_loops (bool, optional): If set to :obj:`False`, will not add
          self-loops to the input graph. (default: :obj:`True`)
      normalize (bool, optional): Whether to add self-loops and compute
          symmetric normalization coefficients on the fly.
          (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})`,
        edge indices :math:`(2, |\mathcal{E}|)`,
        edge features :math:`(|\mathcal{E}|, D)` *(optional)*
      - **output:** node features :math:`(|\mathcal{V}|, F_{out})`
code: def reset_parameters(self):
      super().reset_parameters()
      glorot(self.lin.weight)
      glorot(self.mlp[0].weight)
      glorot(self.mlp[2].weight)
      zeros(self.mlp[0].bias)
      zeros(self.mlp[2].bias)
      zeros(self.bias)
  
file_path: pytorch_geometric/torch_geometric/nn/conv/pdn_conv.py
imports: import torch
  from torch import Tensor
  from torch.nn import Linear, Parameter, ReLU, Sequential, Sigmoid
  from torch_geometric.nn.conv import MessagePassing
  from torch_geometric.nn.conv.gcn_conv import gcn_norm
  from torch_geometric.nn.inits import glorot, zeros
  from torch_geometric.typing import Adj, OptTensor, SparseTensor
  from torch_geometric.utils import spmm
label_desc: Use image node_id 2 for calling the PDNConv obj's underlying member method code with example usage: obj.reset_parameters() without return types