code: def __init__(
      self,
      in_feats,
      n_hidden,
      n_classes,
      n_layers,
      activation,
      dropout,
      use_linear,
  ):
      super().__init__()
      self.n_layers = n_layers
      self.n_hidden = n_hidden
      self.n_classes = n_classes
      self.use_linear = use_linear
  
      self.convs = nn.ModuleList()
      if use_linear:
          self.linear = nn.ModuleList()
      self.norms = nn.ModuleList()
  
      for i in range(n_layers):
          in_hidden = n_hidden if i > 0 else in_feats
          out_hidden = n_hidden if i < n_layers - 1 else n_classes
          bias = i == n_layers - 1
  
          self.convs.append(
              dglnn.GraphConv(in_hidden, out_hidden, "both", bias=bias)
          )
          if use_linear:
              self.linear.append(
                  nn.Linear(in_hidden, out_hidden, bias=False)
              )
          if i < n_layers - 1:
              self.norms.append(nn.BatchNorm1d(out_hidden))
  
      self.input_drop = nn.Dropout(min(0.1, dropout))
      self.dropout = nn.Dropout(dropout)
      self.activation = activation
  
imports: import dgl.nn.pytorch
  import torch
  import torch.nn
  from dgl import function
  from dgl.ops import edge_softmax
  from dgl.utils import expand_as_pair
label_desc: Use image node_id 1 to create a new GCN object from inherited base classes: nn with example: obj = GCN(in_feats, n_hidden, n_classes, n_layers, activation, dropout, use_linear)