class_docstr: Create the structure of the graph convolutional network in the MOGONET method.
  For more information please refer to the MOGONET paper.
  
  Args:
      in_channels (int): Size of each input sample.
      hidden_channels (List[int]): A list of sizes of hidden layers.
      dropout (float): Probability of an element to be zeroed.
code: def __init__(
      self, in_channels: int, hidden_channels: List[int], dropout: float
  ) -> None:
      super().__init__()
      self.conv1 = MogonetGCNConv(in_channels, hidden_channels[0])
      self.conv2 = MogonetGCNConv(
          hidden_channels[0], hidden_channels[1]
      )
      self.conv3 = MogonetGCNConv(
          hidden_channels[1], hidden_channels[2]
      )
      self.dropout = dropout
  
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 1 to create a new MogonetGCN object from inherited base classes: Module with example: obj = MogonetGCN(in_channels, hidden_channels, dropout)