class_docstr: Create message passing layers for the MOGONET method. Each layer is defined as:
  
  .. math::
      H^{(l+1)}=f(H^{(l)}, A) = \sigma(AH^{(l)}W^{(l)})
  
  where :math:`\mathbf{H^{(l)}}` is the input of the :math:`l`-th layer and :math:`\mathbf{W^{(l)}}` is the weight
  matrix of the :math:`l`-th layer. :math:`\sigma(.)` denotes a non-linear activation function.
  
  For more information please refer to the MOGONET paper.
  
  Args:
      in_channels (int): Size of each input sample.
      out_channels (int): Size of each output sample.
      bias (bool, optional): If set to ``False``, the layer will not learn an additive bias. (default: ``True``)
      aggr (string or list or Aggregation, optional): The aggregation scheme to use,
          *e.g.*, ``"add"``, ``"sum"``, ``"mean"``, ``"min"``, ``"max"`` or ``"mul"``.
      **kwargs (optional): Additional arguments of :class:`torch_geometric.nn.conv.MessagePassing`.
docstr: Construct messages from node :math:`j` to node :math:`i` for each edge in ``edge_index``.
docstr_tok: ["Construct","messages","from","node",":","math",":","`","j","`","to","node",":","math",":","`","i","`","for","each","edge","in","``","edge_index","``","."]
code: def message(self, x_j: Tensor) -> Tensor:
      r"""Construct messages from node :math:`j` to node :math:`i` for each edge in ``edge_index``."""
      return x_j
  
imports: from typing import List, Optional, Union
  import torch
  import torch.nn.functional
  import torch_sparse
  from torch import Tensor
  from torch.nn import Module, Parameter
  from torch.nn.init import xavier_normal_
  from torch_geometric.nn.aggr import Aggregation
  from torch_geometric.nn.conv import MessagePassing
  from torch_sparse import SparseTensor
label_desc: Use image node_id 4 for calling the MogonetGCNConv obj's underlying member method code with example usage: obj.message(x_j) and returns: x_j