code: def __init__(
      self, in_features: int, hidden_sizes: List[int], out_features: int
  ):
      super(WeightedGCNBlock, self).__init__()
      gcns, relus, bns = (
          nn.ModuleList(),
          nn.ModuleList(),
          nn.ModuleList(),
      )
      input_size = in_features
      for hidden_size in hidden_sizes:
          gcns.append(GCNConv(input_size, hidden_size))
          relus.append(nn.ReLU())
          bns.append(nn.BatchNorm1d(hidden_size))
          input_size = hidden_size
      gcns.append(GCNConv(hidden_sizes[-1], out_features))
      relus.append(nn.ReLU())
      bns.append(nn.BatchNorm1d(out_features))
      self.gcns, self.relus, self.bns = gcns, relus, bns
  
imports: import torch
  import numpy
  import torch.nn
  from typing import List
  import torch.nn.functional
  from torch_geometric.nn import GCNConv
label_desc: Use image node_id 1 to create a new WeightedGCNBlock object from inherited base classes: nn with example: obj = WeightedGCNBlock(in_features, hidden_sizes, out_features)